我有一个正在为悉尼用户运行的 Plone 实例,因此 TZ 环境变量设置为Australia/Sydney
. 有了这个集合,使用DateTime
Zope2 中的模块的代码会产生显示错误时区的结果。例如:
>>> import time
>>> import DateTime
>>> print time.strftime("%a, %d %b %Y %T %z") #
Thu, 20 Sep 2012 02:38:08 +1000
>>> print DateTime.DateTime().rfc822()
Thu, 20 Sep 2012 02:38:08 -0400
这是相当有问题的,因为Products.MailHost
将Date:
传出电子邮件的标头设置为该值DateTime().rfc822()
(在 MailHost.py 的第 466 行)。由于偏移量错误,Date 标头中的时间现在是未来 12 小时。接收该电子邮件的 SMTP 服务器通常会立即拒绝它!
同一实例中的其他代码非常高兴地使用该 TZ 变量正确运行,因为它使用datetime
Python 中的模块,这一切都基于 libc 的time.h
函数。
那么,为了让 Plone 的 MailHost 在澳大利亚时区工作,人们做了什么?