我創建今天10:30在紐約日期:爲什麼python紐約時區顯示4:56而不是4:00?
ny_tz = timezone('America/New_York')
ny_time = datetime(2014, 9, 4, 10, 30, 2, 294757, tzinfo=ny_tz)
此打印:
2014年9月4日10:30:02.294757-04:56
我想比較這與另一個紐約時間有4:00的時區偏移,所以比較不起作用。
如何使時區偏移4:00?
我創建今天10:30在紐約日期:爲什麼python紐約時區顯示4:56而不是4:00?
ny_tz = timezone('America/New_York')
ny_time = datetime(2014, 9, 4, 10, 30, 2, 294757, tzinfo=ny_tz)
此打印:
2014年9月4日10:30:02.294757-04:56
我想比較這與另一個紐約時間有4:00的時區偏移,所以比較不起作用。
如何使時區偏移4:00?
而應該做這樣的:
ny_tz = timezone('America/New_York')
ny_time = ny_tz.localize(datetime(2014, 9, 4, 10, 30, 2, 294757))
這給你一個正確的結果:
>>> print ny_tz.localize(datetime(2014, 9, 4, 10, 30, 2, 294757))
2014-09-04 10:30:02.294757-04:00
相關pytz
文檔部分:http://pytz.sourceforge.net/#localized-times-and-date-arithmetic
你的情況會發生什麼事是時區被盲目地附加到日期時間對象,不知道它的年份,月份等等。因爲日期是未知的,並且它是不實際的可以確定目前什麼時候是立法,如果夏令時有效,等等,假設你只需要紐約的地理時間,你就可以得到。
結果可能因不同年份而異。例如,夏令時在美國於1918年被引入,所以在1917年和1918年同日的結果不同:
>>> print ny_tz.localize(datetime(1917, 9, 4, 10, 30, 2, 294757))
1917-09-04 10:30:02.294757-05:00
>>> print ny_tz.localize(datetime(1918, 9, 4, 10, 30, 2, 294757))
1918-09-04 10:30:02.294757-04:00
這個時區的東西不適合心靈的暈! – Atma 2014-09-04 15:10:32
@Atma是的,這是真的。我知道很多非常聰明,技能嫺熟的程序員,他們在Python的時區處理方面遇到麻煩。 – 2014-09-04 15:16:33
在你的代碼是什麼'''timezone'''? – wwii 2014-09-04 14:52:27