我有一个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