... How can I fix this?
The easiest way would be to use a different (and unique) notation for your timezone, e.g. "GMT+8".
Well, it turns out not to be so easy. I found that even a notation like "GMT+8" is not unique in meaning, see http://docs.sun.com/app/docs/doc/806-5189/6je7g4sr7?a=view. It can mean 8 hours east of GMT, or 8 hours west of GMT!!! And again zope DateTime seems to interprete this differently than the Linux operation system. With my operation system timezone now set to Etc/GMT-8: ws1:/usr/lib/zope2.7/lib/python# date Fri Mar 18 10:49:44 GMT-8 2005 ws1:/usr/lib/zope2.7/lib/python# cat /etc/timezone Etc/GMT-8 I now get:
from DateTime import DateTime a= DateTime('2005/01/01 08:00 GMT-8') a DateTime('2005/01/01 08:00:00 GMT-8') a.strftime('%Y-%m-%d %H:%M:%S %Z') '2005-01-02 00:00:00 GMT-8'
Isnt' that very confusing? Instead of the 14 hours off with CST, I now get 16 hours off! If zope interpretes the timezone abbreviation differently than the operation system, it will causer the users/developers a lot of headache. I think this could be called a bug now instead of just a nusance. For the moment, I have to switch to Date() and Time() instead of strftime. -- HONG Yuan Homemaster Trading Co., Ltd. No. 601, Bldg. 41, 288 Shuangyang Rd. (N) Shanghai 200433, P.R.C. Tel: +86 21 55056553 Fax: +86 21 55067325 E-mail: hongyuan@homemaster.cn