问题 自UTC时区开始以来的秒数


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


1960
2017-11-09 22:37


起源



答案:


这是一种方法。

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

9
2017-11-09 22:41



使用 delta.total_seconds() - jfs
如果他/她知道自一天开始以来<24小时,则可以安全使用 timedelta.seconds 正确?只是想知道是否有另一个理由可以避免这个答案。 - Joe Holloway
闰秒 不受支持,因此可以安全地假设 delta.days 是 0。但 .total_seconds() 在语义上更好,并且对于代码的读者来说它的负担较小。 - jfs


答案:


这是一种方法。

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

9
2017-11-09 22:41



使用 delta.total_seconds() - jfs
如果他/她知道自一天开始以来<24小时,则可以安全使用 timedelta.seconds 正确?只是想知道是否有另一个理由可以避免这个答案。 - Joe Holloway
闰秒 不受支持,因此可以安全地假设 delta.days 是 0。但 .total_seconds() 在语义上更好,并且对于代码的读者来说它的负担较小。 - jfs


一个秒的秒数 datetime.timedeltax, 是(谁)给的 timedelta.total_seconds

x.total_seconds()

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


6
2017-11-09 22:40





import time
t = time.gmtime()
seconds_since_utc_midnight = t.tm_sec + (t.tm_min * 60) + (t.tm_hour * 3600)

对于当地时间,我们可以使用 time.localtime() 代替 time.gmtime()


0
2017-10-11 18:43