[英]Number of particular months/weekdays between two dates
如何获得两个日期之间特定月份和工作日的数量。
如果日期是
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)]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.