0
如何獲得兩個日期之間的特定月份和工作日的數量。兩個日期之間的特定月份/工作日的數量
如果日期
datetime.datetime(2004, 01, 01)
datetime.datetime(2005, 10, 01)
我想我作爲
{'January':2, 'February':2, ..., 'December':1}
{'Monday':xx, ..., 'Sunday':xx}
如何獲得兩個日期之間的特定月份和工作日的數量。兩個日期之間的特定月份/工作日的數量
如果日期
datetime.datetime(2004, 01, 01)
datetime.datetime(2005, 10, 01)
我想我作爲
{'January':2, 'February':2, ..., 'December':1}
{'Monday':xx, ..., 'Sunday':xx}
輸出在Python 2.7:
from datetime import datetime
from dateutil import rrule
import itertools as it
from collections import Counter
rule = rrule.rrule(rrule.DAILY,
dtstart=datetime(2004, 01, 01),
until=datetime(2005, 10, 01))
dict(Counter(d.strftime('%A') for d in rule))
# {'Friday': 92,
# 'Monday': 91,
# 'Saturday': 92,
# 'Sunday': 91,
# 'Thursday': 92,
# 'Tuesday': 91,
# 'Wednesday': 91}
dict(Counter(k for k,v in it.groupby(d.strftime('%B') for d in rule)))
# or
dict(Counter(k for k,v in it.groupby(rule, key=lambda x: x.strftime('%B'))))
# {'April': 2,
# 'August': 2,
# 'December': 1,
# 'February': 2,
# 'January': 2,
# 'July': 2,
# 'June': 2,
# 'March': 2,
# 'May': 2,
# 'November': 1,
# 'October': 2,
# 'September': 2}
正如@ thg435正確地評論說:dateutil
不是標準的Python圖書館。但是,可以用以下命令代替:
dtstart = datetime(2004, 01, 01)
until = datetime(2005, 10, 01)
rule = [dtstart + timedelta(i) for i in xrange((until - dtstart).days + 1)]
創意!值得指出的是,dateutil是非標準的(在這種情況下可以很容易地用timedelta代替)。 – georg