Thi*_*ter 38
假设day是一个datetime.date或一个datetime.datetime对象,这段代码为上周的周五创建一个datetime/ date对象:
friday = day - timedelta(days=day.weekday()) + timedelta(days=4, weeks=-1)
Run Code Online (Sandbox Code Playgroud)
说明:timedelta(days=day.weekday())是星期一之间的偏移,day所以增加4天并减去一周会得到你上周五的星期五.
当然你可以简化这个(+4d -1w = -3d):
friday = day - timedelta(days=day.weekday() + 3)
Run Code Online (Sandbox Code Playgroud)
注意:获取timedelta,使用from datetime import timedelta或仅import datetime使用datetime.timedelta
小智 20
另一种更简单的方法是使用python-dateutil.要获得上周五:
>>> from dateutil.relativedelta import relativedelta, FR
>>> from datetime import datetime
>>> datetime(2015, 7, 8) + relativedelta(weekday=FR(-1))
datetime.datetime(2015, 7, 3, 0, 0)
Run Code Online (Sandbox Code Playgroud)
下周五:
>>> datetime(2015, 7, 8) + relativedelta(weekday=FR(+1))
datetime.datetime(2015, 7, 10, 0, 0)
Run Code Online (Sandbox Code Playgroud)