我有一個數據文件包含像「1331856000000」的時間戳。不幸的是,我沒有很多格式的文檔,所以我不確定時間戳是如何格式化的。我試過Python的標準datetime.fromordinal()
和datetime.fromtimestamp()
和其他幾個,但沒有任何匹配。我很確定這個特定的數字對應於當前日期(例如2012-3-16),但沒有更多。如何將整數時間戳轉換爲Python日期時間
如何將此號碼轉換爲datetime
?
我有一個數據文件包含像「1331856000000」的時間戳。不幸的是,我沒有很多格式的文檔,所以我不確定時間戳是如何格式化的。我試過Python的標準datetime.fromordinal()
和datetime.fromtimestamp()
和其他幾個,但沒有任何匹配。我很確定這個特定的數字對應於當前日期(例如2012-3-16),但沒有更多。如何將整數時間戳轉換爲Python日期時間
如何將此號碼轉換爲datetime
?
datetime.datetime.fromtimestamp()
是正確的,除非您可能有毫秒級的時間戳(如JavaScript),但fromtimestamp()
預計Unix時間戳,以秒爲單位。
那樣做:
>>> import datetime
>>> your_timestamp = 1331856000000
>>> date = datetime.datetime.fromtimestamp(your_timestamp/1e3)
,其結果是:
>>> date
datetime.datetime(2012, 3, 16, 1, 0)
是否回答你的問題?
EDIT:J.F.塞巴斯蒂安由1e3
正確建議使用真分割(浮動1000
)。如果你想得到準確的結果,差異是很大的,因此我改變了我的答案。不同的結果是Python 2.x的默認行爲,它總是在分割時使用int
(使用/
運算符)int
,int
(這稱爲floor division)。通過與1e3
除數(的1000
是表示作爲浮點型)或具有float(1000)
(或1000.
等)替換除數1000
(作爲一個int
),分割變得真實劃分。除以float
int
,float
通過int
,float
通過float
等。而當有傳遞給fromtimestamp()
方法時間戳一些小數部分,這種方法的結果還包含有關小數部分(信息的數量時的Python 2.x的返回float
微秒)。
使用真正的部門:'/ 1e3' – jfs 2012-03-16 21:42:59
@ J.F.Sebastian:你是完全正確的,我編輯了我的答案並添加了一些解釋你爲什麼是對的。如果您不同意解釋,請告訴我。 – Tadeck 2012-03-16 22:06:26
我發現更清楚寫x * 0.001而不是x/1e3 – 2013-11-06 17:37:34