gpt4 book ai didi

python - 如何在添加 timedelta 时不从 datetime 开始第二天?

转载 作者:行者123 更新时间:2023-11-28 21:15:17 25 4
gpt4 key购买 nike

给定当前时间 23:30:00,我加上两个小时(7200 秒)。我怎样才能得到同一天的时间?所以我想要 25:30:00 的结果。

目前只能获取到第二天的时间:

>>> from datetime import datetime, timedelta
>>> current_time = "23:30:00"
>>> duration = 3600
>>> (datetime.strptime(current_time, "%H:%M:%S") + timedelta(seconds=duration)).strftime("%H:%M:%S")
'00:30:00'

最佳答案

如果您只想增加小时、分钟、秒并创建一个字符串:

def weird_time(current_time,duration):
start = datetime.strptime(current_time, "%H:%M:%S")
st_hr, st_min, st_sec = start.hour, start.minute, start.second
mn, secs = divmod(duration, 60)
hour, mn = divmod(mn, 60)
mn, secs = st_min+mn, st_sec+secs
if secs > 59:
m, secs = divmod(secs,60)
mn += m
if mn > 59:
h, mn = divmod(mn,60)
hour += h
return "{:02}:{:02}:{:02}".format(st_hr+hour, mn, secs)

输出:

In [19]: weird_time("23:30:00",7200)
Out[19]: '25:30:00'

In [20]: weird_time("23:30:00",3600)
Out[20]: '24:30:00'

In [21]: weird_time("23:30:59",7203)
Out[21]: '25:31:02'

In [22]: weird_time("23:30:59",3601)
Out[22]: '24:31:00'

我们也可以使用 timedelta 来计算总秒数,并以此为基础进行计算,而不是自己进行所有计算:

from datetime import datetime,timedelta


def weird_time(current_time,duration):
start = datetime.strptime(current_time, "%H:%M:%S")
st_hr, st_min, st_sec = start.hour, start.minute, start.second
comb = timedelta(minutes=st_min,seconds=st_sec) + timedelta(seconds=duration)
mn, sec = divmod(comb.total_seconds(), 60)
hour, mn = divmod(mn, 60)
return "{:02}:{:02}:{:02}".format(int(st_hr+hour), int(mn), int(sec))

哪个输出相同:

In [29]: weird_time("23:30:00",7200)
Out[29]: '25:30:00'

In [30]: weird_time("23:30:00",3600)
Out[30]: '24:30:00'

In [31]: weird_time("23:30:59",7203)
Out[31]: '25:31:02'

In [32]: weird_time("23:30:59",3601)
Out[32]: '24:31:00'

In [33]: weird_time("05:00:00",3600)
Out[33]: '06:00:00'

只需要增加小时数,我们需要捕捉的部分是秒、分钟或两者的总和大于 59。

关于python - 如何在添加 timedelta 时不从 datetime 开始第二天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30464111/

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