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