2012-01-16 32 views
2

嘗試在Python 2.6以下幾點:爲什麼python的datetime.isocalendar()和datetime.year有所不同?

newyear_2012 = datetime.date.fromtimestamp(1325419200) 
newyear.year # returns 2012 
newyear.isocalendar() # return (2011, 52, 7) 

這裏有什麼交易?這是一個錯誤?我找不到記錄,但也許我沒有找到正確的地方。

如果我是轉換unix時間戳here,它告訴我:孫老師,2012 01一月12:00:00 GMT

更新: 下面的答案解釋這不是一個Python的錯誤,而是由於符合ISO規範。如果你想獲得的是永遠不會把前幾天的一年中周#52週數,你可以嘗試以下方法:

week_no = int(time.strftime("%U", datetime_object.timetuple())) 

我不知道是什麼標準,是對應於,但從我的角度來看,它的行爲更直觀(在我的申請周內,一年內的數字應該隨着時間的推移而增加)。

+1

datetime.date.isocalendar()的行爲不是由你的直覺決定的,而是由ISO 8601決定的。 – jwg 2016-05-04 09:52:37

回答

2

請看圖here。 2012年1月1日是在2011年

相關問題