如何从gmtime()的时间+日期输出中获取自纪元以来的秒数?

时间:2010-12-28 19:08:46

标签: python datetime time

你如何反转gmtime(),你把时间+日期和获得秒数?

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

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

6 个答案:

答案 0 :(得分:530)

使用time模块:

epoch_time = int(time.time())

答案 1 :(得分:112)

您想要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

的详细信息

答案 2 :(得分: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

答案 3 :(得分:4)

t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")

答案 4 :(得分:4)

ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()

这应与int(time.time())不同,但使用x % (60*60*24)

之类的内容是安全的

datetime — Basic date and time types:

  

与时间模块不同,日期时间模块不支持闰秒。

答案 5 :(得分:3)

有两种方法,具体取决于您的原始时间戳:

mktime()timegm()

http://docs.python.org/library/time.html