• 关于系统时间的几个问题


    关于系统时间的几个问题

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

  • 相关阅读:
    [ 原创 ] Oracle存储过程中使用游标进行多行数据输出
    [ 原创 ] Python解压版安装配置教程
    [ 转载 ] ORACLE存储过程
    [ 转载 ] Oracle存储过程及函数的练习题
    [ 原创 ] Oracle数据库一些基本命令
    [ 转载 ] Linux CentOS 查看操作系统版本信息
    [ 转载 ] Android开发中如何做单元测试
    [ 转载 ] 关于conn /as sysdba 无需密码直接可以连接的疑问
    [ 转载 ] oracle如何查看当前有哪些用户连接到数据库
    [ 转载 ] Oracle 内存(SGA,PGA)详细介绍
  • 原文地址:https://www.cnblogs.com/www886/p/4267665.html
Copyright © 2020-2023  润新知