gpt4 book ai didi

python - 如何在 Python 中将日期范围划分为月份?

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:14 25 4
gpt4 key购买 nike

我有以下日期范围:

begin: 2018-02-15
end: 2018-04-23

我想实现以下目标:

["2018-02-15 - 2018-02-28", "2018-03-01 - 2018-03-31", "2018-04-01 - 2018-04-23"]

本质上,我想将给定的日期范围划分为月份。我想不出在 Python 中完成此操作的方法。

我考虑过解决方案here , 但是,这会根据指定的时间间隔拆分日期范围。我希望能够动态拆分日期范围。

因此,给定从 2018 年 2 月 15 日到 2018 年 4 月 23 日的日期范围,我希望能够获得该范围内的各个月份,如下所示:

  • 2018年2月15日至2018年2月28日
  • 2018 年 3 月 1 日至 2018 年 3 月 31 日
  • 2018年4月1日至2018年4月23日

最佳答案

在循环中;从第一天开始,不断增加一天,直到到达结束日期;每当月份更改时保存日期。

import datetime
begin = '2018-02-15'
end = '2018-04-23'

dt_start = datetime.datetime.strptime(begin, '%Y-%m-%d')
dt_end = datetime.datetime.strptime(end, '%Y-%m-%d')
one_day = datetime.timedelta(1)
start_dates = [dt_start]
end_dates = []
today = dt_start
while today <= dt_end:
#print(today)
tomorrow = today + one_day
if tomorrow.month != today.month:
start_dates.append(tomorrow)
end_dates.append(today)
today = tomorrow

end_dates.append(dt_end)


out_fmt = '%d %B %Y'
for start, end in zip(start_dates,end_dates):
print('{} to {}'.format(start.strftime(out_fmt), end.strftime(out_fmt)))

结果:

>>>
15 February 2018 to 28 February 2018
01 March 2018 to 31 March 2018
01 April 2018 to 23 April 2018
>>>

您可能想出一种方法来获取开始日期和结束日期之间的月份范围;为每个月份的第一天创建一个日期时间对象,存储它们和它们之前的日子。不过跨越年份变化的日期可能会有问题。

关于python - 如何在 Python 中将日期范围划分为月份?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51293632/

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