python - 日期时间天数差异按月和年分组
问题描述
我想找到两个日期之间的天数,但按月和年分组。
import calendar
from datetime import datetime, timedelta
from itertools import groupby
start = datetime(2020,12,30)
end = datetime(2021,12,15)
如果开始年份和结束年份不同,我需要按月和按年分组结果。我如何应用代码来获得答案?
非常感谢你
解决方案
基于另一个答案中共享的想法,您创建一个日期列表,map
将它们添加到您想要的组,然后使用groupby
from datetime import datetime, timedelta
from itertools import groupby
start = datetime(2020,12,30)
end = datetime(2021,12,15)
dates = (start + timedelta(days=i) for i in range(1, (end - start).days + 1))
year_months = map(lambda x: (x.year, x.month), dates)
for v, g in groupby(year_months):
print(v, sum(1 for _ in g))
Output:
(2020, 12) 1
(2021, 1) 31
(2021, 2) 28
(2021, 3) 31
(2021, 4) 30
(2021, 5) 31
(2021, 6) 30
(2021, 7) 31
(2021, 8) 31
(2021, 9) 30
(2021, 10) 31
(2021, 11) 30
(2021, 12) 15
推荐阅读
- owl - OWL 限制个人只有一种类型的 ObjectProperty
- php - 有没有办法在 laravel 连接中获取所有相关数据?
- javascript - 如何将值与类分开
- python - Python 正则表达式:re.findall 没有看到所有的数学
- c++ - std::nested_exception 和多态性 - 这是可以做到的最好的吗?
- xcode - Xcode 在始终可见的面板中显示当前文件类和方法
- python-3.x - 安装python3-gi后无法导入gi
- java - 从 8.4.0 升级到 8.5.0 时出现 Optaplanner 错误
- python - 进程间通信 Python
- html - 如何将复选框及其标签与下拉菜单对齐