我有一個python TZ-aware datetime end_date
,比如2013-03-01 06:00:00 + 00:00。我希望得到美國/芝加哥時區這個日期時間的月份。如果我做end_date.month
我得到3.我想做一個方法調用像end_date.timezone('America/Chicago').month
- 或什麼 - 這會給我正確的價值2.Python本地日期時間月
想我明白這個datetime/pytz的東西..
我有一個python TZ-aware datetime end_date
,比如2013-03-01 06:00:00 + 00:00。我希望得到美國/芝加哥時區這個日期時間的月份。如果我做end_date.month
我得到3.我想做一個方法調用像end_date.timezone('America/Chicago').month
- 或什麼 - 這會給我正確的價值2.Python本地日期時間月
想我明白這個datetime/pytz的東西..
你可以使用.astimezone()
(並根據文檔,處理時區轉換和夏令時等事情,你應該得到.normalize()
的結果)。
from pytz import timezone
end_date = ...tz-aware datetime...
us_tz = timezone('America/Chicago')
localized_end_date = us_tz.normalize(end_date.astimezone(us_tz))
注意.astimezone
不能用天真的日期時間使用 - 它必須是一個TZ感知日期時間。另一種方法是在tzinfo
實例上使用.localize()
方法。
end_date = ...naive datetime...
localized_end_date = timezone('America/Chicago').localize(end_date, is_dst=None)
難道不是像'pytz.timezone('America/Chicago').localize(end_date).month'? – voithos 2013-03-13 22:39:41
不錯的嘗試,但這給:ValueError:不是天真的日期時間(tzinfo已設置) – Erik 2013-03-13 22:44:06
我猜''end_date.astimezone(pytz.timezone('America/Chicago'))。month'?對, – voithos 2013-03-13 22:52:13