gpt4 book ai didi

python - 将 Python 日期时间拆分为小时对齐的 block

转载 作者:太空狗 更新时间:2023-10-30 02:22:07 25 4
gpt4 key购买 nike

我有一个 datetime.datetime 实例 d 和一个 datetime.timedelta 实例 td 并且正在尝试编写一个函数,将 (d, d+td) 范围分解为 [(d,x1),(x1,x2),...,(xn,d+ td)] 并且 xn 变量都与小时对齐。

例如,如果

d = datetime.datetime(2012, 9, 8, 18, 53, 34)
td = datetime.timedelta(hours=2, minutes=34, seconds=5)

我想要一份 list

[(datetime.datetime(..., 18, 53, 34), datetime.datetime(..., 19, 0, 0)),
(datetime.datetime(..., 19, 0, 0), datetime.datetime(..., 20, 0, 0)),
(datetime.datetime(..., 20, 0, 0), datetime.datetime(..., 21, 0, 0)),
(datetime.datetime(..., 21, 0, 0), datetime.datetime(..., 21, 27, 39))]

任何人都可以建议一个很好的、Pythonic 的方法来完成这个吗?

最佳答案

使用 dateutil ,您可以使用 rrule 生成列表:

import dateutil.rrule as rrule
import datetime

def hours_aligned(start, end, inc = True):
if inc: yield start
rule = rrule.rrule(rrule.HOURLY, byminute = 0, bysecond = 0, dtstart=start)
for x in rule.between(start, end, inc = False):
yield x
if inc: yield end

d = datetime.datetime(2012, 9, 8, 18, 53, 34)
td = datetime.timedelta(hours=2, minutes=34, seconds=5)

for x in hours_aligned(d,d+td):
print(x)

产量

2012-09-08 18:53:34
2012-09-08 19:00:00
2012-09-08 20:00:00
2012-09-08 21:00:00
2012-09-08 21:27:39

关于python - 将 Python 日期时间拆分为小时对齐的 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12333174/

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