1

在处理日志文件时,我需要比较 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

而使用此站点转换 1358252743927 会返回

GMT: Tue, 15 Jan 2013 12:25:43 GMT
Your time zone: 1/15/2013 1:25:43 PM GMT+1

这是正确的时间-但不知何故python无法处理这个时间戳。

有谁知道如何转换时间戳以获得后者的结果?

4

2 回答 2

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)

这似乎很好。

于 2013-02-28T10:01:25.977 回答
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 已知的时区问题)。

于 2013-02-28T10:02:27.233 回答