Python本地日期时间月份

1 投票
1 回答
2171 浏览
提问于 2025-04-17 19:00

我有一个带时区的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)

撰写回答