卡萨布兰卡的时区无效
我在我的网站上使用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的公告邮件列表,并计划每年更新几次。