伯爵在Python日期(Count Dates in Python)

2019-09-16 14:00发布

我想指望周五的使用Python每年13ths从1950 - 2050年(我知道,晚了一点)的数量。 我不熟悉使用任何日期/日历包。 有什么想法吗?

Answer 1:

这有一个直接的解决方案。 使用金额来算的次数在本月13日是星期五:

>>> from datetime import datetime # the function datetime from module datetime
>>> sum(datetime(year, month, 13).weekday() == 4 
        for year in range(1950, 2051) for month in range(1,13))
174


Answer 2:

该datetime.date类有一个weekday()函数,让你一周(从0开始索引)为整数的一天,所以周五是4还有isoweekday()从1天的索引,它给你,你喜欢。

无论如何,一个简单的解决办法是:

friday13 = 0
months = range(1,13)
for year in xrange(1950, 2051):
    for month in months:
        if date(year, month, 13).weekday() == 4:
            friday13 += 1


Answer 3:

它是某种运动或功课? 我依稀记得已经解决了这个问题的。 我可以给你一个提示,我似乎已经习惯Calendar.itermonthdays2当然应该有其他的方法来解决它。



Answer 4:

听起来像功课。 提示(平日4是一个星期五):

import datetime
print(datetime.datetime(1950,1,13).weekday())


Answer 5:

而其它的解决方案简单明了,下面一个更“calendarist”。 您将需要dateutil包,这是安装的软件包:

from datetime import datetime
from dateutil import rrule

fr13s = list(rrule.rrule(rrule.DAILY,
                         dtstart=datetime(1950,1,13),
                         until=datetime(2050,12,13),
                         bymonthday=[13],
                         byweekday=[rrule.FR]))
# this returns a list of 174 datetime objects

你看这些五个参数rrule.rrule :抓住每一次rrule.DAILY间(天) dtstartuntil其中bymonthday是13 byweekdayrrule.FR (星期五)。



文章来源: Count Dates in Python