自UTC时区当天开始以来的秒数

12 投票
3 回答
10030 浏览
提问于 2025-04-17 06:00

我想知道如何在Python中找到“从一天开始到现在的秒数(使用UTC时区)”。我查了文档,但不太明白怎么用datetime.timedelta来实现这个。

3 个回答

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

如果想要获取本地时间,我们可以用 time.localtime() 来代替 time.gmtime()

7

在一个 datetime.timedelta 对象中,x 的秒数可以通过 timedelta.total_seconds 来获取:

x.total_seconds()

这个功能是在 Python 2.7 中引入的。如果你使用的是更早版本的 Python,就需要自己来计算:total_seconds = x.days*24*60*60 + x.seconds + x.microseconds/1e6

10

这里有一种方法可以做到。

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

撰写回答