将tzinfo设置为datetime对象的最佳实践或快捷方式

时间:2012-05-08 18:42:01

标签: python datetime timezone

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

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

1 个答案:

答案 0 :(得分:1)

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

使用localize后,您应该拥有适当时区的日期时间。对astimezone的调用是多余的,可能会搞砸你。

时区需要知道日期和时间,以便它可以针对夏令时过渡进行自我调整。这就是replace不起作用的原因。