在处理日志文件时,我需要比较epoc和人类可读的时间戳。
epoc=time.strftime("%d.%m.%Y %H:%M - %Z", time.localtime(1358252743927))
print epoc
和
t1=time.gmtime(1358252743927)
print t1
都返回类似
的内容26.04.45011 22:52 - CEST
使用this site转换1358252743927
GMT: Tue, 15 Jan 2013 12:25:43 GMT
Your time zone: 1/15/2013 1:25:43 PM GMT+1
这是正确的时间 - 但不知何故python无法处理此时间戳。
有没有人知道如何转换时间戳以获得后者的结果?
答案 0 :(得分:3)
看起来你的时间戳有几毫秒,gmtitme函数无法处理。你提到的网站可以。如果您删除该巨大数字的最后三位数字,该网站仍然会给您相同的结果,因为它不相信,您真的想要45011年。
所以在传递之前将数字除以1000(如果你确定,你总是得到那么高的分辨率),你很好:
t1 = time.gmtime(1358252743.927)
print t1
给出:
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=15, tm_hour=12, tm_min=25, tm_sec=43, tm_wday=1, tm_yday=15, tm_isdst=0)
看起来很好。
答案 1 :(得分:2)
Python以秒为单位处理纪元时间,我怀疑,看看你的时间戳有多大,而不是以毫秒为单位。
如果您删除最后3位数字,您将获得预期时间:
>>> value = 1358252743927
>>> import time
>>> time.strftime("%d.%m.%Y %H:%M - %Z", time.localtime(value / 1000))
'15.01.2013 13:25 - CET'
(减去Python已知的时区问题)。