2014-12-07 31 views
3

的Python 2.7.8 fromtimestamp的價值觀不同,我稱之爲:的Python 2.7.8:在Windows和Linux

import datetime 
print datetime.datetime.fromtimestamp(10) 

但也有根據操作系統不同的結果:

  • 1970年至1901年-01 01:00:10 - Linux的
  • 1970-01-01 00:00:10 - 視窗

所以有一個小時的班。這是一個已知的問題?有什麼辦法統一返回值,以便在不同的操作系統上得到相同的結果?

+0

如果你只是想比較的時間戳,[選定了time.time()](https://docs.python.org/2/library/time.html#time.time)給你秒以來的新紀元。有關詳細信息,請參見[此問題](http://stackoverflow.com/questions/14186179/in-python-is-epoch-time-returned-by-time-always-measured-from-jan-1-1970)。 – maxy 2014-12-07 17:08:36

回答

2

很可能兩個操作系統有不同的時區設置。

python標準庫不提供時區的實現(寫在the python's documentation for tzinfo)。無論如何,你應該使用第三方(純python)pytz module像下面的代碼。

from datetime import datetime 
from pytz import timezone 

tz = timezone('America/St_Johns') 
datetime.fromtimestamp(10, tz) 
+0

這裏與OP相同,Python 3.5,Ubuntu和Windows 10都設置爲倫敦時區。 – reupen 2016-04-16 18:13:11