1

下面描述的代码段是否有快捷方式:

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
4

1 回答 1

1

答案在 pytz 文档中给出:http: //pytz.sourceforge.net/#localized-times-and-date-arithmetic

使用localize后,您应该有一个具有正确时区的日期时间。调用astimezone是多余的,可能会搞砸你。

时区需要知道日期和时间,以便它可以根据夏令时转换自行调整。这就是为什么replace不起作用。

于 2012-05-08T19:08:51.137 回答