卡萨布兰卡的时区无效

0 投票
1 回答
636 浏览
提问于 2025-04-18 04:13

我在我的网站上使用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日起开始实行夏令时。

因为我们有很多来自摩洛哥的访客,所以这个问题让人很沮丧。

如果有任何建议,我将非常感激,提前谢谢大家。

(操作系统:Ubuntu 12.04)

1 个回答

2

我觉得你可能用的是旧版的pytz库。我用最新版本运行了你的代码,结果显示的值是正确的。

摩洛哥在2014年改变了夏令时的规则。详细信息可以在这里这里找到。

这些变化已经被加入到时区数据库的2013g版本中。你可以查看

pytz文档中的最新版本部分,获取更新信息。

一般来说,如果你是面向全球用户,建议你关注pytz的公告订阅,或者IANA的公告邮件列表,并计划每年更新几次。

撰写回答