Python Linux时间戳与日期时间互转

7
我希望了解如何将日期时间 Wed Apr 24 19:25:06 2013 GMT 转换为 Linux 时间戳 1366831506000(13位数字),并使用Python进行反向转换。

例如:

Wed Apr 24 19:25:06 2013 GMT

1366831506000

和从

1366831506000

Wed Apr 24 19:25:06 2013 GMT

使用 import timestr(time.strftime("%a %b %d %H:%M:%S %Y GMT", time.gmtime())) 代码可以直接从程序中获取 Wed Apr 24 19:25:06 2013 GMT - Santhosh
1个回答

12
从字符串转换为时间戳,使用 time.strptime(),然后将得到的struct_time元组传递给time.mktime();你的时间戳使用 毫秒,而不是UNIX浮点型的秒数值,因此需要乘以1000:
import time

datestr = "Wed Apr 24 19:25:06 2013 GMT"
time.mktime(time.strptime(datestr, "%a %b %d %H:%M:%S %Y %Z")) * 1000

在另一个方向上,使用time.strptime(),传递由time.gmtime()创建的struct_time元组,并首先将时间戳除以1000:

timestamp = 1366831506000
time.strftime("%a %d %b %Y %H:%M:%S GMT", time.gmtime(timestamp / 1000.0))

演示:

>>> datestr = "Wed Apr 24 19:25:06 2013 GMT"
>>> time.mktime(time.strptime(datestr, "%a %b %d %H:%M:%S %Y %Z")) * 1000
1366827906000.0
>>> timestamp = 1366831506000
>>> time.strftime("%a %d %b %Y %H:%M:%S GMT", time.gmtime(timestamp / 1000.0))
'Wed 24 Apr 2013 19:25:06 GMT'

非常感谢您的帮助,Martijn Pieters。 - sanjayan ravi
你好,非常抱歉之前我没有清楚表达我的问题。我现在正在尝试将“datestr =“Wed Apr 24 19:25:06 2013 +7200”[+ 7200 = GMT + 2(欧洲/柏林时区)的偏移秒数]”转换为Linux时间戳,但是使用您上面提供的演示无法实现该目标。 - sanjayan ravi
@sajayanravi:不,要处理时区你需要用外部库。使用python-dateutil - Martijn Pieters
如果输入字符串中没有给出日期,它会假定日期为今天吗? - Luke Taylor
没关系,它在我的树莓派上假定为1900年1月1日。 - Luke Taylor
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接