将 tzinfo 设置为日期时间对象的最佳做法或快捷方式



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

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不起作用的原因。

相关内容

  • 没有找到相关文章

最新更新