如何获取上周三的Python日期对象
我想用Python找到上个星期三的日期对象。我可以通过isocalendar来确定今天在日历上的位置,并判断是否需要回退一周才能到达上个星期三。不过,我不知道怎么用这些信息创建一个新的日期对象。简单来说,我需要弄清楚如何从一个iso日历元组创建一个日期。
from datetime import date
today = date.today()
if today.isocalendar()[2] > 3: #day of week starting with Monday
#get date for Wednesday of last week
else:
#get date for Wednesday of this current week
4 个回答
-1
阅读 http://docs.python.org/library/datetime.html
自己写一个函数,使用 date2 = date1 - timedelta(days=1) 和 date.isoweekday(),在之前的日期中循环,直到 isoweek 不等于 3(星期三)为止。
10
假设“上个星期三”不能和“今天”是同一天,这里展示了如何计算一周中任何一天的日期:
>>> from datetime import date
>>> from datetime import timedelta
>>>
>>> MON, TUE, WED, THU, FRI, SAT, SUN = range(7)
>>>
>>> def lastWday(adate, w):
... """Mon:w=0, Sun:w=6"""
... delta = (adate.weekday() + 6 - w) % 7 + 1
... return adate - timedelta(days=delta)
...
>>> for x in range(8, 16):
... start = date(year=2010, month=3, day=x)
... prev = lastWday(start, WED)
... print start, start.weekday(), prev, prev.weekday()
...
2010-03-08 0 2010-03-03 2
2010-03-09 1 2010-03-03 2
2010-03-10 2 2010-03-03 2
2010-03-11 3 2010-03-10 2
2010-03-12 4 2010-03-10 2
2010-03-13 5 2010-03-10 2
2010-03-14 6 2010-03-10 2
2010-03-15 0 2010-03-10 2
60
我觉得你想要的是这个。如果指定的日期是星期三,它会返回那一天。
from datetime import date
from datetime import timedelta
from calendar import WEDNESDAY
today = date.today()
offset = (today.weekday() - WEDNESDAY) % 7
last_wednesday = today - timedelta(days=offset)
举个例子,三月份每一天的最后一个星期三:
for x in xrange(1, 32):
today = date(year=2010, month=3, day=x)
offset = (today.weekday() - WEDNESDAY) % 7
last_wednesday = today - timedelta(days=offset)
print last_wednesday