关于系统时间的几个问题

关于系统时间的几个问题

装了windows7和centos 6.0双系统一段时间了,一直有个小问题硌应着我,就是两者的系统时间总是不同,相差8个小时,linux下的系统时间总是比windows早8个小时,也就是说当windows是早上8点的,linux下面则是下午六点了。我把windows下面的系统时间设置正确之后,linux下的就不对,把linux下的设置正确以后,windows又不对了。觉得是个小问题,也没管它。

最近在学习php,今天写一个打印系统时间的测试程序,发现打印出来的时间不对,跟当前显示的系统时间相差8小时(注,我是在windows下面搭建的php环境),但是不同的是时间是比windows的系统时间晚了8小时,这个时候勾起了我对linux下的那个问题的回忆。于是我决定研究一下这个问题。

上网搜了一下这个问题,发现不仅仅是我遇到了,结合众网友的解释,我得到以下结论。对于centos和windows时间不一致的问题,原来是由于二者计算系统时间的方式不同。计算机中有一个BIOS时间,即CMOS时间,windows是直接使用BIOS时间作为系统的时间,而centos默认是将BIOS时间作为UTC标准时间,系统时间是在这个时间基础上根据时区设置计算出来的,比如当前系统时区被我设置成北京(东8区),那么系统时间就会在BIOS时间上加8个小时,导致错误。这个时候,如果我们把linux下系统时间设置正确后,那么它会同时更新BIOS时间(当前时间-8小时),下次启动windows系统的时候,windows又直接将BIOS时间作为系统时间,又错了。说到这里,大家都知道解决方案了,改变windows或者linux系统时间计算方式。我选择了修改linux系统的时间计算方式:

shell>vim /etc/sysconfig/clock

将文件修改为如下的形式。

   ZONE="Asia/Shanghai" #设置时区

   UTC=false # 关闭世界协调时间

   ARC=false

   :wq!保存退出

   shell>ntpdate pool.ntp.org #对准时间时间

   shell>/sbin/hwclock --systohc #设置硬件时间和系统时间一致并校准

   至此这个问题解决了。

   另外在php中那个问题,是由于既没有在php.ini中指定时区,代码中也没有在页头使用

date_default_timezone_set()来设置时区,默认使用了UTC标准时间,当然比当前系统晚8小时。

php.ini中设置时区或者使用刚刚那个函数可以设置时区问题就解决了。

posted @ 2015-02-02 14:12  88686  阅读(165)  评论(0编辑  收藏  举报