找到给定日期后的第一个星期一的日期
假设你有一个特定的日期,比如2011年7月2日,你想知道在这个日期之后的下一个星期一(或者说任何一个工作日)是什么时候,该怎么做呢?
13 个回答
30
试试这个
>>> dt = datetime(2011, 7, 2)
>>> dt + timedelta(days=(7 - dt.weekday()))
datetime.datetime(2011, 7, 4, 0, 0)
记住,下一个星期一是在某个星期一之后的7天,星期二之后的6天,以此类推。而且要知道,在Python中,datetime
这个类型把星期一表示为0
,而星期天表示为6
。
74
这里有一个简洁而通用的替代方案,跟上面那些稍微复杂的回答相比更简单易懂。
def onDay(date, day):
"""
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).
"""
days = (day - date.weekday() + 7) % 7
return date + datetime.timedelta(days=days)
167
当然可以!请看下面的内容:
在编程中,有时候我们需要将一些数据从一个地方转移到另一个地方。这就像把水从一个杯子倒到另一个杯子一样。为了做到这一点,我们通常会使用一些工具或方法来帮助我们完成这个任务。
有些时候,数据的格式可能会不一样,就像不同的杯子可能有不同的形状和大小。这就需要我们在转移数据之前,先把它们调整到相同的格式,这样才能顺利地进行转移。
在这个过程中,我们可能会遇到一些问题,比如数据丢失或者格式不匹配。这就像在倒水的时候,如果不小心把水洒出来了,或者杯子不合适,水就会流出来。为了避免这些问题,我们需要仔细检查每一步,确保数据能够安全、准确地转移。
总之,数据转移就像是一个小小的搬家过程,我们需要小心翼翼地处理每一件事情,确保一切顺利进行。
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)