【发布时间】:2011-12-25 17:49:42
【问题描述】:
如何在 Python 中找到“自 UTC 时区开始以来的秒数”?我查看了文档,但不明白如何使用 datetime.timedelta 来获取它。
【问题讨论】:
标签: python utc timedelta seconds
如何在 Python 中找到“自 UTC 时区开始以来的秒数”?我查看了文档,但不明白如何使用 datetime.timedelta 来获取它。
【问题讨论】:
标签: python utc timedelta seconds
这是一种方法。
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
【讨论】:
delta.days 是 0。但是.total_seconds() 在语义上更好,对代码的读者来说负担更小。
datetime.timedelta、x 中的秒数由timedelta.total_seconds 给出:
x.total_seconds()
该功能是在 Python2.7 中引入的。对于旧版本的 python,您只需要自己计算:total_seconds = x.days*24*60*60 + x.seconds + x.microseconds/1e6。
【讨论】:
import time
t = time.gmtime()
seconds_since_utc_midnight = t.tm_sec + (t.tm_min * 60) + (t.tm_hour * 3600)
对于本地时间,我们可以使用time.localtime() 而不是time.gmtime()
【讨论】: