CST時區(qū)問題
關(guān)鍵詞: CST timezone 時區(qū)
老問題了,幾年前做gnats的移植的時候曾經(jīng)碰到過這個問題,沒想到現(xiàn)在還能碰到這個問題。
在很多unix下用date命令都能看到當(dāng)前的時區(qū)。很多unix下中國時區(qū)都是用CST表示的。但是這個表示方法非常不合理。因為CST同時代表了下面4個時區(qū)。
CST Central Standard Time (USA) UT-6:00
CST Central Standard Time (Australia) UT+9:30
CST China Standard Time UT+8:00
CST Cuba Standard Time UT-4:00
在unix 下通過/etc/localtime這個硬連接指向的/usr/share/zoneinfo下的時區(qū)文件表示當(dāng)前的真正時區(qū)。比如 /etc/localtime指向了/usr/share/zoneinfo/Asia/Shanghai這個文件的時候,CST就代表了中國標(biāo)準(zhǔn)時間。
但是很多語言的時間函數(shù)庫根本不做這個判斷,往往就是用一個獨立的時區(qū)配置文件做時區(qū)關(guān)鍵字和GMT的轉(zhuǎn)換。因此很多系統(tǒng)里面CST都變成了GMT-6,也就是美國中部時間。
在zope里面也是如此。而且很奇怪的是有的地方做了正確的判斷,有的地方?jīng)]做正確判斷。
比如文件的最后修改時間就是錯的,但是如果對一個頁面做comment的時候,comment時間就是正確的。
修改Zope中DateTime\DateTime.py的定義為:'cst':'GMT+8',就能夠解決這個問題。
但是這樣做就需要改代碼,然后重新編譯。
我試著在zope的啟動腳本里面加上TZ的環(huán)境變量設(shè)置,但是沒有效果。我想,最根本的解決方法應(yīng)該是改變unix服務(wù)器的時區(qū)設(shè)置方法吧。
回復(fù) 更多評論