如何从gmtime()的时间+日期输出中获取epoch后的秒数?

2024-04-18 10:13:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何反转gmtime(),在这里输入时间+日期并获得秒数?

我有像'Jul 9, 2009 @ 20:02:58 UTC'这样的字符串,我想返回纪元到2009年7月9日之间的秒数。

我试过time.strftime但是我不知道如何正确使用它,或者它是否是正确的命令。


Tags: 字符串命令time时间julutc纪元strftime
3条回答

使用time模块:

epoch_time = int(time.time())

注意time.gmtime将时间戳0映射到1970-1-1 00:00:00

In [61]: import time       
In [63]: time.gmtime(0)
Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

time.mktime(time.gmtime(0))为您提供一个时间戳,其偏移量取决于您的区域设置,通常情况下,时间戳可能不是0。

In [64]: time.mktime(time.gmtime(0))
Out[64]: 18000.0

time.gmtime相反的是calendar.timegm

In [62]: import calendar    
In [65]: calendar.timegm(time.gmtime(0))
Out[65]: 0

如果您是因为Google告诉您这是如何获取Unix时间戳而来到这里的,请停止阅读此答案。向下滚动一个。

如果要反转time.gmtime(),则需要calendar.timegm()

>>> calendar.timegm(time.gmtime())
1293581619.0

可以使用time.strptime()将字符串转换为时间元组,该时间元组返回一个可以传递给calendar.timegm()的时间元组:

>>> import calendar
>>> import time
>>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC'))
1247169778

有关日历模块here的详细信息

相关问题 更多 >