gpt4 book ai didi

Python获取下一次发生时间的日期时间

转载 作者:行者123 更新时间:2023-12-05 02:07:34 26 4
gpt4 key购买 nike

我正在尝试查找发生特定时间的下一个日期时间。

例如:

now = datetime.datetime.now() # April 5th, 1 PM
desired_time = '14:00:00' # 2 PM
next_datetime_occurance = get_next_datetime(now, desired_time) # Returns April 5th, 2PM

now = datetime.datetime.now() # April 5th, 3 PM
desired_time = '14:00:00' # 2 PM
next_datetime_occurance = get_next_datetime(now, desired_time) # Returns April 6th, 2PM

我如何以干净的方式执行此操作? (假设一切都在 UTC 中)

最佳答案

您可以将 datetime.replace() 与一些日期时间算法一起使用:

import datetime as dt

def next_datetime(current: dt.datetime, hour: int, **kwargs) -> dt.datetime:
repl = current.replace(hour=hour, **kwargs)
while repl <= current:
repl = repl + dt.timedelta(days=1)
return repl

演示:

>>> now = dt.datetime.utcnow()
>>> now
datetime.datetime(2020, 5, 7, 20, 17, 21, 581402)
>>> next_datetime(now, hour=19)
datetime.datetime(2020, 5, 8, 19, 17, 21, 581402)
>>> next_datetime(now, hour=21)
datetime.datetime(2020, 5, 7, 21, 17, 21, 581402)
>>> next_datetime(now, hour=20, minute=12)
datetime.datetime(2020, 5, 8, 20, 12, 21, 581402)
>>> next_datetime(now, hour=20, minute=50)
datetime.datetime(2020, 5, 7, 20, 50, 21, 581402)

这里的 **kwargs 被设计成采用比 hour 更高分辨率的 datetime() 构造函数参数,例如分、秒和微秒。您可能想要对此提供一些验证,因为在给出问题时传递类似 year 的内容没有意义。

关于Python获取下一次发生时间的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61666851/

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