下面描述的代码片段是否有快捷方式:
if value.tzinfo is None:
value = default_tzinfo.localize(value)
new_value = value.astimezone(default_tzinfo)
else:
new_value = value
我尝试使用datetime.replace()
但在使用美国/太平洋时区时返回 GMT -8 而不是 -7。
请参阅:http://wwp.greenwichmeantime.com/time-zone/usa/pacific-time/pacific-daylight-time.htm
value = value.replace(tzinfo=default_tzinfo)
示例输出:
2012-05-06 13:12:45-08:00
US/Pacific
---
2012-05-07 00:12:45+03:00
Europe/Istanbul
答案在 pytz 文档中给出: http://pytz.sourceforge.net/#localized-times-and-date-arithmetic
使用localize
后,您应该有一个具有正确时区的日期时间。打电话给astimezone
是多余的,可能会把你搞砸。
时区需要知道日期和时间,以便它可以针对夏令时转换自行调整。这就是为什么replace
不起作用的原因。