ims*_*msc 0 python time datetime
如何获得两个日期之间特定月份和工作日的数量.
如果日期是
datetime.datetime(2004, 01, 01)
datetime.datetime(2005, 10, 01)
Run Code Online (Sandbox Code Playgroud)
我希望我的输出为
{'January':2, 'February':2, ..., 'December':1}
{'Monday':xx, ..., 'Sunday':xx}
Run Code Online (Sandbox Code Playgroud)
在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}
Run Code Online (Sandbox Code Playgroud)
正如@ 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)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
959 次 |
| 最近记录: |