2012-04-23 56 views
30

要獲得在JavaScript中,我們使用JavaScript的時間戳到Python的datetime轉換

var ts = new Date().getTime() 

什麼是將其轉換爲一個Python datetime到目前爲止我用下面的代碼

>>> jsts = 1335205804950 
>>> dt = datetime.datetime.fromtimestamp(jsts/1000) 
>>> dt 
datetime.datetime(2012, 4, 24, 0, 30, 4) 

我有道時間戳劃分時間戳1000,因爲我得到像

的錯誤
ValueError        Traceback (most recent call last) 
1 d = datetime.datetime.fromtimestamp(a) 
ValueError: year is out of range 

蘇丹。

回答

48

您當前的方法是正確的,除以1000是必要的,因爲您的JavaScript以毫秒爲單位返回時間戳,datetime.datetime.fromtimestamp()需要以秒爲單位的時間戳。

爲了保持毫秒精度可以通過1000.0劃分,因此,所使用的,而不是整數除法浮點除法:

>>> dt = datetime.datetime.fromtimestamp(jsts/1000.0) 
>>> dt 
datetime.datetime(2012, 4, 23, 11, 30, 4, 950000) 
+1

謝天謝地,這在Python 3中是不需要的。 – delnan 2012-04-23 18:42:05

+0

謝謝@ F.J :)。 – sultan 2012-04-23 18:49:21

+0

@delnan我在python3中有同樣的問題:'datetime.fromtimestamp(1485373592240)'除非用'1000'除法失敗 – jjj 2017-01-26 14:36:03

1

你這樣做是正確的做法,因爲JS包括日期毫秒的方式/時間。 Python(和PHP)據我所知,不要。 要獲得更高精度,您可以使用/1000.0

0

對於其他人仍然收到錯誤:我有一個類似的問題,但unix時間戳以微秒爲單位,即我必須將時間戳除以1000000才能得到正確的結果。

dt = datetime.datetime.fromtimestamp(1502360499615921)