我使用pytz库(django timezone)在我的网站上处理时区,我注意到只有非洲/卡萨布兰卡的错误偏移,这是一个例子:
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。
由于我们有大量来自摩洛哥的访客,这是一个非常令人沮丧的问题。
任何建议都将不胜感激,提前致谢。
(OS:Ubuntu 12.04)
答案 0 :(得分:2)
我认为你只有旧版的pytz。我使用最新版本运行您的代码,它显示正确的值。
摩洛哥改变了2014年的夏令时规则。详情here和here。
这被放入version 2013g of the time zone database。有关更新信息,请参阅pytz文档的Latest Versions部分。
一般情况下,如果您为全球受众群体提供服务,则应监控pytz atom feed或IANA announcements mailing list,并计划每年更新几次。