gpt4 book ai didi

python - 使用 rrule 将日期分配给相关月份

转载 作者:行者123 更新时间:2023-12-01 09:21:02 27 4
gpt4 key购买 nike

我能够使用 rrule 列出两个日期之间的天数,如下所示:

from dateutil import rrule
from datetime import datetime

a = '20180306'
b = '20180506'

for dt in rrule.rrule(rrule.DAILY,
dtstart = datetime.strptime(a, '%Y%m%d'),
until = datetime.strptime(b, '%Y%m%d')):
print (dt.strftime('%Y%m%d'))

给出的输出是:

20180306
20180307
...
20180408
20180409
...
20180506

我怎样才能将这些天分配给相关月份以给出以下输出:

March-18: 26 days
April-18: 30 days
May-18: 6 days

我也很好奇如何扩展它以将小时数纳入计算中,即。

March-18: 11.9 days

谢谢黑曼巴

最佳答案

您可以使用itertools.groupby并提取每个组的长度。在下面的示例中,grouperres 都是惰性迭代器,因此您可以通过迭代提取结果。

from dateutil import rrule
from datetime import datetime
from itertools import groupby

a = '20180306'
b = '20180506'

rule = rrule.rrule(rrule.DAILY,
dtstart=datetime.strptime(a, '%Y%m%d'),
until=datetime.strptime(b, '%Y%m%d'))

grouper = groupby(rule, key=lambda x: x.strftime('%B-%y'))

res = ((i, len(list(j))) for i, j in grouper)

for month, count in res:
print('{0}: {1} days'.format(month, count))

March-18: 26 days
April-18: 30 days
May-18: 6 days

关于python - 使用 rrule 将日期分配给相关月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50787037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com