python - 如何计算两个日期之间的差异,动态拆分它们?Python
问题描述
我必须编写一个函数来计算两个日期之间的天数差异。如果天数超过 30,则将其拆分为 n 个日期范围并保存在列表或字典中。我已经开始使用该功能但无法完成它。该函数必须计算动态值。
例如
start_date = '2020-07-01'
end_date = '2020-09-15'
difference = (end_date - start_date).days
dateranges = []
dateranges.append(start_date)
if difference > 30:
end_date = start_date + dt.timedelta(days=30)
dateranges.append(end_date)
但是我不知道如何让它循环,当它每次都需要一个新的 start_date 和 end_date 并计算它们之间的差异时。例如,我总是在这里添加 30 天,但可能需要添加的天数更少。
解决方案
例如,我总是在这里添加 30 天,但可能需要添加的天数更少。
datetime
库和timedelta
函数会处理它并在需要时增加月份。
from datetime import datetime
from datetime import timedelta
start_date = '2020-07-01'
end_date = '2020-09-15'
def date_difference(d1, d2):
d1 = datetime.strptime(d1, "%Y-%m-%d")
d2 = datetime.strptime(d2, "%Y-%m-%d")
if abs((d2 - d1).days) > 30:
dates = []
# if you don't want to include start_date, use range(1, 30) instead.
for i in range(0, 30):
dates.append(d1 + timedelta(days=i))
return dates
return []
print(date_difference(start_date, end_date))
输出:
[datetime.datetime(2020, 7, 1, 0, 0), datetime.datetime(2020, 7, 2, 0, 0),
datetime.datetime(2020, 7, 3, 0, 0), datetime.datetime(2020, 7, 4, 0, 0),
datetime.datetime(2020, 7, 5, 0, 0), datetime.datetime(2020, 7, 6, 0, 0),
datetime.datetime(2020, 7, 7, 0, 0), datetime.datetime(2020, 7, 8, 0, 0),
datetime.datetime(2020, 7, 9, 0, 0), datetime.datetime(2020, 7, 10, 0, 0),
...
datetime.datetime(2020, 7, 30, 0, 0)]
推荐阅读
- r - 将表格转换为 r 中的更多 html 或 csv 表格
- vue.js - 保持活动状态并且路由器视图不起作用?
- javascript - 在搜索中查询过滤器参数的嵌套数组
- animation - 如何在 ChildAdded 事件处理程序中错开 Xamarin Forms 动画?
- mysql - 如何将表连接到值而不是 mySQL 中的另一个表
- jquery - jquery 设置的一些 css 属性不会显示在 html 元素上
- azure - 是否有设置动态 Windows 虚拟桌面主机池负载平衡方法的解决方案?
- ruby-on-rails - 尝试使用全新应用程序运行 Rails 服务器后的 URI 问题
- pandas - 减少了带有条件记录的 Pandas 过滤器
- node.js - 不能 POST - 我的 POST 请求有什么问题?节点