Python本地日期时间月份
我有一个带时区的Python日期时间对象,叫做end_date
,比如说是2013年3月1日06:00:00(UTC时间)。我想要获取这个日期在美国芝加哥时区的月份。如果我直接用end_date.month
,我得到的是3。可是我想要有一个方法,比如end_date.timezone('America/Chicago').month
,这样可以得到正确的值2。
我以为我对这个日期时间和pytz的东西已经理解了……
1 个回答
5
你可以使用 .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
不能用于没有时区信息的日期时间(也就是所谓的“天真”日期时间),它必须是带有时区信息的日期时间。另一种选择是使用 .localize()
方法在 tzinfo
实例上。
end_date = ...naive datetime...
localized_end_date = timezone('America/Chicago').localize(end_date, is_dst=None)