所谓的时间问题归根结底也就是“时区”问题,我们首先要知道的是:
1、美国时间和中国时间相差应该是8小时。
2、PHP的时间和MySQL的时间不是相同的。
所以,我们所要做的事情就是:
1、把美国时间改成中国时间。
2、并且要把PHP的时间和MySQL的时间统一。
一、修改PHP时间
听上去有点小复杂,其实很简单。首先我们来改PHP的时间,将这句代码插入到PHP程序中,公共调用页的顶部(也就是要include_once,require_once到的脚本里,当然你不用_once我也没有意见),确保需要用到时间的页面都必须调用到:
代码:
date_default_timezone_set('PRC') or die('时区设置失败,请联系管理员!');
现在测试下:
代码:echo date('Y-m-d H:i:s');
怎么样?哇哈哈,正确显示中国时间了,当然你要说北京时间我也没意见。至于那个参数PRC是什么意思,我记得是某个神奇的土地之缩写,不用管它,照搬就行了,错不了的。成功了?NO,不要得意得太早,在MySQL里输入语句SELECT NOW();你会惊愕的发现,MySQL的时间还是美国时间。不急,我们继续下一步。
二、修改MySQL时间
如果你在写程序的时候,习惯了用类或者函数,那么恭喜你,这一步你同样只需要一次复制粘贴操作就能将它解决。如果你在写程序的从来不用类或者函数,那么我会祈祷耶稣和释迦牟尼一同保佑你,不会在改程序的时候累得很惨,同时希望你改掉这个不好的编程习惯。那么,就请在PHP程序有数据库连接的下一语句(只有1次,就加1句;若有无数次,就加无数次……这个编程习惯,还是重要啊)加入如下代码:
mysql_query("SET time_zone = '+8:00'") or die('时区设置失败,请联系管理员!');
再去SELECT NOW();下,你会惊喜地发现,MySQL也是中国时间了。为什么是+8:00呢?前面我说过了,中国时间和美国时间差8小时,往那个那个貌似向东还是向西的方向来着?(不好意思我是路盲,我在怪地球是圆的)。OK,现在MySQL的时间也搞定了,我相信现在就会有比较严谨朋友问了:那你如何证明PHP的时间和MySQL的时间是同步呢?啊……这个人与人之间的信任,还是重要的,就像汇款,哈哈,那我们来做个测试吧:
代码:
//这里是页面的开头,用于改PHP时间的代码。
date_default_timezone_set('PRC') or die('时区设置失败,请联系管理员!');
//-------------------------------------------------------------
//
// 这里写数据库连接的代码,别懒,自己写。
//
//-------------------------------------------------------------
//数据库一旦连接,紧跟着就是改MySQL时间的代码。
mysql_query("SET time_zone = '+8:00'") or die('时区设置失败,请联系管理员!');
//显示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];
刷新,我再刷新,我还刷新,怎么样?打我啊。哇哈哈,一秒都不差哦。完全同步,这下你该满足了吧?呵呵。
在这里我要建议大家的是,在编程过程中,凡涉及操作时间的部分,最好统一用数据库的时间,这样可以避免无法实时到帐,呵呵