2013-07-30 129 views
1

我在Python中試着這樣做。是什麼這些的區別:Python日期時間奇怪行爲

>>> a = datetime.fromtimestamp(1373576406) 
>>> a.replace(tzinfo=tzutc()) 
datetime.datetime(2013, 7, 12, 0, 0, 6, tzinfo=tzutc()) 
>>> a.strftime('%s') 
'1373576406' 

>>> datetime.fromtimestamp(1373576406).replace(tzinfo=tzutc()).strftime('%s') 
'1373580006' 

我真的不明白爲什麼會這樣。兩個時間戳不應該相等嗎?

我在這兩個的Python 3.3.2和Python 2.7.1嘗試這些

回答

2

datetime.replace返回 DateTime實例。

在第一個示例中,您忽略了datetime.replace的返回值,然後在舊的日期時間實例上執行datetime.strftime

這會導致您遇到的不平等。

爲了使這兩個例子等於你就必須編輯冗長一個看起來像:

>>> a = datetime.fromtimestamp(1373576406) 
>>> a = a.replace(tzinfo=tzutc()) 
>>> a.strftime('%s') 
'1373576406