在给定的日期后找到第一个星期一的日期

2024-04-25 23:23:25 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答

试试看

>>> dt = datetime(2011, 7, 2)
>>> dt + timedelta(days=(7 - dt.weekday()))
datetime.datetime(2011, 7, 4, 0, 0)

使用时,下一个星期一是星期一之后的7天,星期二之后的6天,依此类推,还使用Python的datetime类型将星期一报告为0,…,星期日报告为6

import datetime
def next_weekday(d, weekday):
    days_ahead = weekday - d.weekday()
    if days_ahead <= 0: # Target day already happened this week
        days_ahead += 7
    return d + datetime.timedelta(days_ahead)

d = datetime.date(2011, 7, 2)
next_monday = next_weekday(d, 0) # 0 = Monday, 1=Tuesday, 2=Wednesday...
print(next_monday)

这里有一个简洁而通用的替代方案来回答上面略显沉重的问题。

# Returns the date of the next given weekday after
# the given date. For example, the date of next Monday.
# NB: if it IS the day we're looking for, this returns 0.
# consider then doing onDay(foo, day + 1).
onDay = lambda date, day: date + datetime.timedelta(days=(day-date.weekday()+7)%7)

相关问题 更多 >