2016-02-19 24 views
2

我這樣做:Python的時間戳出了錯

timestamp=long('1455873250789') 
print(timestamp) 
d=datetime.datetime(timestamp) 

我得到這個:

1455873250789 
Traceback (most recent call last): 
    File ".../pycharm-5.0.4/helpers/pydev/pydevd.py", line 2411, in <module> 
    globals = debugger.run(setup['file'], None, None, is_module) 
    File ".../pycharm-5.0.4/helpers/pydev/pydevd.py", line 1802, in run 
launch(file, globals, locals) # execute the script 
    File "....py", line ..., in <module> 
d=datetime.datetime(timestamp) 
OverflowError: signed integer is greater than maximum 

爲什麼?

+0

也許,那是因爲你的時間戳會在48104年的某個時間,這不被支持?目前,UNIX時間約爲1455874000秒,比您的時間戳小3個數量級。 – jsfan

+0

哦,對不起。看起來我剛泄漏,我有一個時間機器:) 感謝您的回答。 – Ivegotaquestion

+0

這個問題可能需要刪除,因爲一個錯誤 – Ivegotaquestion

回答

6

使用datetime.datetime.fromtimestamp

>>> datetime.datetime.fromtimestamp(timestamp/1000.0) 
datetime.datetime(2016, 2, 19, 18, 14, 10, 789000) 

注:timestamp應該由1000分傳遞給方法之前,因爲在給定時間戳的單位是毫秒,而fromtimestamp接受秒(這是官方的UNIX時間戳)。

0
import datetime 

timestamp = int('1455873250789'[:-3]) 
print(datetime.datetime.fromtimestamp(timestamp)) 

這將從您的時間戳字符串中去掉最後三個字符,本質上是將時間戳從毫秒轉換爲秒。使用fromtimestamp(),您可以在幾秒鐘內將Unix時間戳轉換爲datetime對象。