出于國內主機的費用、ICP備案等問題,現在很多朋友都租賃、購買國外主機,可是國外主機顯示的是當地時間,那么怎么設置成國內時間呢?
所謂的時間問題歸根結底也就是“時區(qū)”問題,我們首先要知道的是:
1、美國時間和中國時間相差應該是8小時。
2、PHP的時間和MySQL的時間不是相同的。
所以,我們所要做的事情就是:
1、把美國時間改成中國時間。
2、并且要把PHP的時間和MySQL的時間統(tǒng)一。
一、修改MySQL時間
如果你在寫程序的時候,習慣了用類或者函數,那么恭喜你,這一步你同樣只需要一次復制粘貼操作就能將它解決。如果你在寫程序的從來不用類或者函數,那么我會祈禱耶穌和釋迦牟尼一同保佑你,不會在改程序的時候累得很慘,同時希望你改掉這個不好的編程習慣。那么,就請在PHP程序有數據庫連接的下一語句(只有1次,就加1句;若有無數次,就加無數次……這個編程習慣,還是重要啊)加入如下代碼:復制內容到剪貼板代碼:
mysql_query("SET time_zone = '+8:00'") or die('時區(qū)設置失敗,請聯系管理員!');再去SELECT NOW();下,你會驚喜地發(fā)現,MySQL也是中國時間了。為什么是+8:00呢?前面我說過了,中國時間和美國時間差8小時,往那個那個貌似向東還是向西的方向來著?(不好意思我是路盲,我在怪地球是圓的)。OK,現在MySQL的時間也搞定了,我相信現在就會有比較嚴謹朋友問了:那你如何證明PHP的時間和MySQL的時間是同步呢?啊……這個人與人之間的信任,還是重要的,就像匯款,哈哈,那我們來做個測試吧:復制內容到剪貼板代碼:
//這里是頁面的開頭,用于改PHP時間的代碼。
date_default_timezone_set('PRC') or die('時區(qū)設置失敗,請聯系管理員!');
//-------------------------------------------------------------
//
// 這里寫數據庫連接的代碼,別懶,自己寫。
//
//-------------------------------------------------------------
//數據庫一旦連接,緊跟著就是改MySQL時間的代碼。
mysql_query("SET time_zone = '+8:00'") or die('時區(qū)設置失敗,請聯系管理員!');
//顯示PHP的時間
echo date('Y-m-d H:i:s');
echo
//顯示MySQL的時間
$mysql_time = mysql_query("SELECT NOW()");
$mysql_rows = mysql_fetch_row($mysql_time);
echo $mysql_rows[0];
二、修改PHP時間
聽上去有點小復雜,其實很簡單。首先我們來改PHP的時間,將這句代碼插入到PHP程序中,公共調用頁的頂部(也就是要include_once,require_once到的腳本里,當然你不用_once我也沒有意見),確保需要用到時間的頁面都必須調用到:復制內容到剪貼板代碼:
date_default_timezone_set('PRC') or die('時區(qū)設置失敗,請聯系管理員!');現在測試下:復制內容到剪貼板代碼:
echo date('Y-m-d H:i:s');怎么樣?哇哈哈,正確顯示中國時間了,當然你要說北京時間我也沒意見。至于那個參數PRC是什么意思,我記得是某個神奇的土地之縮寫,不用管它,照搬就行了,錯不了的。成功了?NO,不要得意得太早,在MySQL里輸入語句SELECT NOW();你會驚愕的發(fā)現,MySQL的時間還是美國時間。不急,我們返回到上一步,已經設置好了。