1

我有一个 Python TZ 感知日期end_date时间,例如 2013-03-01 06:00:00+00:00。我想获得美国/芝加哥时区的这个日期时间的月份。如果我这样做,end_date.month我会得到 3。我想做一个方法调用,比如end_date.timezone('America/Chicago').month- 或其他东西 - 这会给我正确的值 2。

以为我理解这个 datetime/pytz 的东西......

4

1 回答 1

6

您可以使用.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 的日期时间。另一种方法是在实例上使用该.localize()方法。tzinfo

end_date = ...naive datetime...
localized_end_date = timezone('America/Chicago').localize(end_date, is_dst=None)
于 2013-03-13T23:21:51.257 回答