例如,如果开始时间是上午8:00,我如何计算20小时后的时间?
答案 0 :(得分:1)
需要使用像timedelta
这样的东西from datetime import datetime, timedelta
twenty_hours= datetime.now() + timedelta(hours=20)
当然你会将datetime.now()更改为你的上午8点或你希望的时间
>>> format(twenty_hours, '%H:%M:%S')
'23:24:31'
答案 1 :(得分:0)
您的问题至少有两种可能的解释:
查找从现在起20小时内的当地时间:
#!/usr/bin/env python3
from datetime import datetime, timedelta, timezone
now = datetime.now(timezone.utc) # current time in UTC
in20hours = (now + timedelta(hours=20)).astimezone() # local time in 20 hours
print("Local time in 20 hours: {in20hours:%I:%M %p}".format(**vars())) # AM/PM
在忽略本地UTC偏移的任何变化时找到时间(由于DST转换或任何其他原因):
#!/usr/bin/env python
from datetime import datetime, timedelta, timezone
now = datetime.now() # local time
by20hours = now + timedelta(hours=20) # move clock by 20 hours
print("Move clock by 20 hours: {by20hours:%I:%M %p}".format(**vars())) # AM/PM
如果本地utc偏移量在接下来的20个小时内没有变化,则两种方法都会产生相同的结果。否则第二种方法失败,找到20小时后的时间。
你可能需要第二种方法,如果你想在同一个当地时间做某事,无论多少小时过去,例如,如果你想在早上6点起床,无论是否已经过了24小时。见How can I subtract a day from a Python date?
如果您正在使用当地时间,有关时间算法的详细信息,请参阅Find if 24 hrs have passed between datetimes - Python。