如何从gmtime()的时间 + 日期输出中获取自纪元以来的秒数?
如何实现gmtime()
的反向操作,也就是输入时间和日期,得到秒数呢?
我有一些字符串,比如'Jul 9, 2009 @ 20:02:58 UTC'
,我想计算从1970年1月1日到2009年7月9日之间的秒数。
我试过time.strftime
,但我不知道该怎么正确使用它,或者它是否是正确的命令。
6 个回答
10
注意,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
861
使用 time 模块:
import time
epoch_time = int(time.time())
156
如果你是通过搜索引擎找到这里的,因为它告诉你这是获取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
关于日历模块的更多信息可以在 这里 找到。