如何从Python的gmtime()的时间+date输出中获得自epoch以来的秒数?

在Python中,你如何做倒转gmtime() ,你把时间+date,并获得秒数?

我有像'2009年7月9日@ 20:02:58 UTC'的string,我想找回从2009年7月9日到现在的秒数。

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

你想calendar.timegm()

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

你可以用time.strptime()将你的string变成一个时间元组,它返回一个可以传递给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 

有关日历模块的更多信息

使用时间模块:

 epoch_time = int(time.time()) 

请注意, time.gmtime将timestamp 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 
 t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z") 

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

mktime()timegm()

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

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

这应该是不同于int(time.time()) ,但是使用像x % (60*60*24)这样的东西是安全的。

date时间 – 基本date和时间types:

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