关于系统时间的几个问题


关于系统时间的几个问题
 
装了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中设置时区或者使用刚刚那个函数可以设置时区问题就解决了。

相关内容

    暂无相关文章