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