【问题标题】:Timezone in Casablanca not valid卡萨布兰卡的时区无效
【发布时间】:2014-06-11 02:11:15
【问题描述】:

我正在使用 pytz 库(django 时区)来处理我网站上的时区,我注意到仅针对非洲/卡萨布兰卡的偏移量有误,示例如下:

In [1]: import datetime

In [2]: import pytz

In [3]: from django.utils.dateformat import format

In [4]: paris = pytz.timezone("Europe/Paris")

In [5]: paris.localize(datetime.datetime.now(), is_dst=True)
Out[5]: datetime.datetime(2014, 4, 25, 11, 25, 9, 473706, tzinfo=<DstTzInfo 'Europe/Paris' CEST+2:00:00 DST>)

In [6]: casablanca = pytz.timezone("Africa/Casablanca")

In [7]: casablanca.localize(datetime.datetime.now(), is_dst=True)
Out[7]: datetime.datetime(2014, 4, 25, 11, 25, 23, 416349, tzinfo=<DstTzInfo 'Africa/Casablanca' WET0:00:00 STD>)

In [8]: format(casablanca.localize(datetime.datetime.now(), is_dst=True), "O") == "+0100"
Out[8]: False

请注意,摩洛哥自 4 月 1 日起实行 DST。

由于我们有大量来自摩洛哥的游客,这是一个非常令人沮丧的问题。

任何建议将不胜感激,在此先感谢。

(操作系统:Ubuntu 12.04)

【问题讨论】:

  • pytz 维护者提交错误报告?
  • 我在上面的示例中添加了一个断言以更加明确。我不知道您所说的“与 pytz 维护者的错误报告”是什么意思。谢谢
  • 如果pytz 有关于卡萨布兰卡夏令时的错误信息,您应该report it as a bug
  • 这个问题似乎是题外话,因为它是关于库中的一个错误。

标签: python django timezone pytz


【解决方案1】:

我认为你只有一个旧版本的 pytz。我使用最新版本运行了您的代码,它显示了正确的值。

摩洛哥更改了 2014 年的 DST 规则。详情 herehere

这被放入version 2013g of the time zone database。有关更新信息,请参阅 pytz 文档的 Latest Versions 部分。

一般来说,如果您服务于全球观众,您应该关注pytz atom feedIANA announcements mailing list,并计划每年更新几次。

【讨论】:

  • 非常感谢您提供原子提要。你说得对,我的版本不是最新的。
  • 没问题 - 很高兴为您提供帮助!还请记住关闭您在启动板上提出的问题。谢谢。
最近更新 更多