我在悉尼有一个为用户运行的Plone实例,因此TZ环境变量设置为Australia/Sydney
。使用此集合,使用Zope2中的DateTime
模块的代码会生成显示错误时区的结果。例如:
>>> 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行)。由于偏移量是错误的,因此日期标题中的时间现在是未来12小时。接收该电子邮件的SMTP服务器通常会立即拒绝它!
同一实例中的其他代码非常高兴地使用该TZ变量正常运行,因为它使用Python中的datetime
模块,该模块都基于libc的time.h
函数。
那么,为了让Plone的MailHost在澳大利亚时区工作,人们做了什么?