我正在寻找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'
答案 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