【问题标题】:Number of seconds since the beginning of the day UTC timezone自一天开始以来的秒数 UTC 时区
【发布时间】:2011-12-25 17:49:42
【问题描述】:

如何在 Python 中找到“自 UTC 时区开始以来的秒数”?我查看了文档,但不明白如何使用 datetime.timedelta 来获取它。

【问题讨论】:

    标签: python utc timedelta seconds


    【解决方案1】:

    这是一种方法。

    from datetime import datetime, time
    
    utcnow = datetime.utcnow()
    midnight_utc = datetime.combine(utcnow.date(), time(0))
    delta = utcnow - midnight_utc
    print delta.seconds # <-- careful
    

    编辑 如建议的那样,如果您想要微秒级精度,或者可能跨越 24 小时周期(即 delta.days > 0),请使用total_seconds() 或@unutbu 给出的公式。

    print delta.total_seconds()  # 2.7
    print delta.days * 24 * 60 * 60 + delta.seconds + delta.microseconds / 1e6 # < 2.7
    

    【讨论】:

    • 如果他/她知道从一天开始到现在 timedelta.seconds 是安全的吗?只是想知道是否有另一个理由避免这个答案。
    • Leap seconds 不受支持,因此可以安全地假设 delta.days0。但是.total_seconds() 在语义上更好,对代码的读者来说负担更小。
    【解决方案2】:

    datetime.timedeltax 中的秒数由timedelta.total_seconds 给出:

    x.total_seconds()
    

    该功能是在 Python2.7 中引入的。对于旧版本的 python,您只需要自己计算:total_seconds = x.days*24*60*60 + x.seconds + x.microseconds/1e6

    【讨论】:

      【解决方案3】:
      import time
      t = time.gmtime()
      seconds_since_utc_midnight = t.tm_sec + (t.tm_min * 60) + (t.tm_hour * 3600)
      

      对于本地时间,我们可以使用time.localtime() 而不是time.gmtime()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-12-03
        • 2013-08-09
        • 1970-01-01
        • 2019-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多