zhangjih 发表于 2010 年 10 月 2 日 08:16:29

教你调整PHP和MySQL的时区,实现同步显示中国时间

『特别提示:以下内容由金光新闻采集从互联网自动获取』
作为一名资深而又严谨的程序员(没见过这么臭屁的人),我在第一时间就注意到了,美国主机的时间和我本地的时间严重不匹配。一想到时间,我就想到了我的汇款没有实时到帐,于是我就怒了,想把工行做转帐系统的程序员们拉出来杀之,但是我又不能犯法,因此只好忍了,改时间算了。这次真的罗嗦完了,别打我。
所谓的时间问题归根结底也就是“时区”问题,我们首先要知道的是:
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;
刷新,我再刷新,我还刷新,怎么样?打我啊。哇哈哈,一秒都不差哦。完全同步,这下你该满足了吧?呵呵。
在这里我要建议大家的是,在编程过程中,凡涉及操作时间的部分,最好统一用数据库的时间,这样可以避免无法实时到帐,呵呵(这13还在耿耿于怀)。
因为是现场直播,难免有疏漏之处,欢迎大家批评指正。我的网站都是我自主开发,目前HM上的站还没做完的,等做完会发出来给大家批的,若是大家赏脸的话,可以去我公司的主页看看www.hetty.cn(这站开做的时候已经是两年多前的事了,当时我对DIV+CSS还不熟,因此全是TABLE,大家莫笑我啊,还有高手们手下留情莫搞破坏啊,呵呵)
好了,我就臭屁到这里吧,以免引起公共不爽被群起而殴之,虽然不是什么好料,但转载时也请注明我那很女性化的英文名:hetty
来源:http://bbs.idcspy.com/viewthread.php?tid=32082&extra=page%3D1%26amp%3Bfilter%3Ddigest

页: [1]
查看完整版本: 教你调整PHP和MySQL的时区,实现同步显示中国时间