前一个工作日在Python [英] Previous weekday in Python

查看:67
本文介绍了前一个工作日在Python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在Python中,给定日期,我如何找到前一个工作日?(工作日是星期一至星期五.我不在乎假期)

In Python, given a date, how do I find the preceding weekday? (Weekdays are Mon to Fri. I don't care about holidays)

推荐答案

从给定日期中减去一天,然后检查该日期是否为工作日.如果没有,减去另一个,直到您有一个工作日:

Simply subtract a day from the given date, then check if the date is a weekday. If not, subtract another, until you do have a weekday:

from datetime import date, timedelta
def prev_weekday(adate):
    adate -= timedelta(days=1)
    while adate.weekday() > 4: # Mon-Fri are 0-4
        adate -= timedelta(days=1)
    return adate

演示:

>>> prev_weekday(date.today())
datetime.date(2012, 8, 20)
>>> prev_weekday(date(2012, 8, 20))
datetime.date(2012, 8, 17)

或者,使用偏移表;无需对此进行映射,元组就可以了:

Alternatively, use an offset table; no need to make this a mapping, a tuple will do just fine:

_offsets = (3, 1, 1, 1, 1, 1, 2)
def prev_weekday(adate):
    return adate - timedelta(days=_offsets[adate.weekday()])

这篇关于前一个工作日在Python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆