如何获取上周三的Python日期对象

2024-04-29 07:13:02 发布

您现在位置: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

Tags: of对象fromimport信息forgettoday
3条回答

我想你想要这个。如果指定的日子是星期三,它会给你那一天。

from datetime import date
from datetime import timedelta

today = date.today()
offset = (today.weekday() - 2) % 7
last_wednesday = today - timedelta(days=offset)

例如,3月份每天的最后一个星期三:

for x in xrange(1, 32):
    today = date(year=2010, month=3, day=x)
    offset = (today.weekday() - 2) % 7
    last_wednesday = today - timedelta(days=offset)

    print last_wednesday

假设“上星期三”不能与“今天”相同,这将显示如何在一周中的任何一天执行此操作:

>>> 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

阅读http://docs.python.org/library/datetime.html

使用date2=date1-timedelta(days=1)和date.isoweekday()编写自己的函数,在isoweek不等于3(星期三)的情况下迭代前几天

相关问题 更多 >