【问题标题】:Calculate time after X hours?X小时后计算时间?
【发布时间】:2014-10-31 01:23:41
【问题描述】:

例如,如果开始时间是上午 8:00,我如何计算 20 小时后的时间?

【问题讨论】:

  • 所以你想为你的计时器做 20 个小时?
  • @smushi 我的程序应该每 20 小时(不是实时,而是假设)要求用户输入,并在每 20 小时后计算当前时间。
  • @eskoka 也请支持答案

标签: python time


【解决方案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'

【讨论】:

  • 中间有夏令时转换是错误的。它可能会返回早于或晚于 20 小时的本地时间。
  • 如果时间增量是负数怎么办?
【解决方案2】:

您的问题至少有两种可能的解释:

  1. 找出距现在正好 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
    
  2. 在忽略本地 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
    

    相关:python time + timedelta equivalent

如果本地 UTC 偏移量在接下来的 20 小时内不变,这两种方法会产生相同的结果。否则第二种方法失败,20小时过去后求时间。

如果您想在同一当地时间做某事,无论相隔多少小时,您可能需要第二种方法,例如,如果您想在早上 6 点起床,无论是否经过了 24 小时。见How can I subtract a day from a Python date?

如果您使用当地时间,有关时间算术的更多详细信息,请参阅Find if 24 hrs have passed between datetimes - Python。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多