下午遇到兩個問題,一個是時區顯示不正確問題,另一個問題時使用cakePHP裡面插入的時間(datetime格式)老是顯示成為12進位。分別解決如下:
第一個問題如下:
| 關於php時區錯誤問題,求解~~~ |
|
作者: 夢作夠了 發布日期: 2006-2-13 查看數: 264 出自: http://www.phpx.com |
| Win2003,Apache2,PHP5,系統時區設定沒問題,但是我的PHP認定了我是國際標準時(GMT)而不是中國標準時(GMT+8),所以我date("Y-m-d G:i T",time())出來的時間的小時部分總比正確時間少8小時....請問大蝦們這是怎麼回事啊,如何修改? |
|
| 【論壇瀏覽】 【我來說兩句】 【列印】 【大】 【中】 【小】 【關閉】 |
| 相關評論 |
| 作者: 夢作夠了 發布日期: 2006-2-13 |
| 自己頂起來,等待達人回答~~~ |
| 作者: yoryoue 發布日期: 2006-2-13 |
| date('Y-m-d G:i:T', strtotime('+8 HOUR') ) |
| 作者: 夢作夠了 發布日期: 2006-2-13 |
| 感謝樓上兄弟的回答,不過這樣治標不治本吧... |
| 作者: 問題多多 發布日期: 2006-2-13 |
| 奇怪的問題,換個PHP版本實驗一下? |
| 作者: 夢作夠了 發布日期: 2006-2-13 |
終於找到答案了~~~~ From CC SpiderMan's BLOG 從php5.1.0開始,php.ini裡加入了date.timezone這個選項,預設情況下是關閉的也就是顯示的時間(無論用什麼php命令)都是格林威治標準時間 和我們的時間(北京時間)差了正好8個小時,有以下3中方法可以恢複正常的時間。 1,最簡單的方法就是不要用php5.1以上的版本 2,如果一定要用,而且不能修改php.ini,則需要在關於時間的初始化的語句的 上面加上 date_default_timezone_set (XXX); cp無此問題 3,一勞永逸,僅限能修改php.ini。開啟php.ini尋找date.timezone 去掉前面的分號 = 後面加XXX,重啟http服務(如apache2或iis等)即可 關於XXX,大陸內地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次為重慶,上海,烏魯木齊) 港台地區可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次為澳門,香港,台北) 還有新加坡:Asia/Singapore 老外好像把北京漏調了 其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC PRC是什嗎?PRC是中華人民共和國啊-_- 以上都是我從php官方說明檔裡整理出來的GMT-8下面的地區,可能會有遺漏 你可以http://www.php.net/docs.php上查到更多的地區 由於程式最後還是會把地名轉為時區來計算,所以當你使用的不是內建的地區的時候,程式將自動使用格林威治標準時間 |
| 作者: getphp 發布日期: 2006-2-13 |
| 哦,原來如此. |
| 作者: chiyanqian 發布日期: 2006-2-13 |
原來如此,怪不得我取得系統時間也不對呢,放到伺服器上沒事,原來是PHP版本問題啊! 長見識了 |
|
|
|
|
第二個問題就更難找了,後來在高手老於的協助下,在/cake/libs/model/dbo/dbo_mysql.php找到datetime的format,將h:i:s修改為H:i:s之後,問題解決。後來下載了最新的cakePHP核心,發現,他們的開發小組已經解決了這個問題。
有使用cakePHP2026版本的使用者請注意了