将日期转换为秒

时间:2013-10-10 18:43:52

标签: python

我正在寻找python等效GNU date(1)选项。基本上我想将日期转换为秒,如下例所示,我尝试从python文档中查找,但我找不到相应的时间模块。

$ convdate="Jul  1 12:00:00 2015 GMT"

$ date '+%s' --date "$convdate"

1435752000

来自GNU date(1)手册页

-d, --date=STRING
              display time described by STRING, not 'now'

4 个答案:

答案 0 :(得分:5)

据我了解,UNIX将日期表示为1970年1月1日的偏移量,因此为了在python中执行此操作,您可以获得时间增量。特别是你的例子:

from datetime import datetime
a = datetime.strptime(convdate, "%b %d %H:%M:%S %Y %Z")
b = datetime(1970, 1, 1)
(a-b).total_seconds()

输出

  

1435752000.0

答案 1 :(得分:2)

>>> x = datetime.strptime('Jul 1 12:00:00 2015 GMT', '%b %d %H:%M:%S %Y %Z')
>>> x.timestamp()
1435744800.0

请注意,这是本地时间戳。我的时区是UTC + 2,因此比您预期的时间少2小时。如果您需要基于UTC的时间戳,可以执行以下操作:

>>> from datetime import timezone
>>> x.replace(tzinfo=timezone.utc).timestamp()
1435752000.0

答案 2 :(得分:1)

您尝试的转换称为“自纪元以来的秒数”,并使用类似这样的函数计算:

def unix_time(dt):
    epoch = datetime.datetime.utcfromtimestamp(0)
    delta = dt - epoch
    return delta.total_seconds()

您可以直接在日期的每个部分加载日期时间,或者从字符串加载日期时间并计算秒数:

>>> def unix_time(dt):
...     epoch = datetime.datetime.utcfromtimestamp(0)
...     delta = dt - epoch
...     return delta.total_seconds()
...
>>> import datetime
>>> a = datetime.datetime(2015, 07, 01, 12, 00, 00)
>>> print a
2015-07-01 12:00:00
>>> print unix_time(a)
1435752000.0
>>>

注意:你可以使用long(unix_time(a))如果你想摆脱最后的.0

希望它有所帮助!

答案 3 :(得分:1)

mktime可用于计算以秒为单位的输入时间:

>>> import time
>>> m = time.localtime()#store it in a var 
>>> time.mktime(m)
o/p: 1435657461.0