`
lzzy_alex
  • 浏览: 30496 次
社区版块
存档分类
最新评论

时区排错

 
阅读更多

时区划分

由于地球自转的关系(自西向东),所以东边比西边先看到太阳。在同一时刻东边可能是清晨,西边可能是深夜,对这一时刻的描述就会造成混乱,即时间定义的混乱。

 

为了克服时间上的混乱,于1884年华盛顿召开子午线会议,规定将全球划分为24个时区,东西各12个,以英国(格林尼治天文台旧址)为零时区,东1-12区,西1-12区,每个时区横跨经度15度,时间正好是1小时。最后的东、西第12区各跨经度7.5度,以东、西经180度为界。

 

每个时区的中央经线上的时间就是这个时区内统一采用的时间,称为区时,相邻两个时区的时间相差1小时。例如,中国东8区的时间总比泰国东7区的时间早1小时,而比日本东9区的时间迟1小时。因此,出国旅行的人,必须随时调整自己的手表,才能和当地时间相一致。凡向西走,每过一个时区,就要把表拨慢1小时(比如2点拨到1点);凡向东走,每过一个时区,就要把表拨快1小时(比如1点拨到2点)。并且规定英国(格林尼治天文台旧址)为本初子午线,即零时(24时)经线。

 

中国领土横跨5个时区,为使用方便,统一使用东八区时间,即北京时间为准。

 

格林尼治时间GMT

Greenwich Mean Time,GMT是英国的标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线是被定义在通过那里的经线,也是世界各地时间的参考标准。

 

格林尼治时间又叫世界时,在对重大事件记录时,使用地方时容易造成混乱,所以往往采用格林尼治时间记录,一旦知道了格林尼治时间,通过换算就可以知道地方时了,比如某事件发生在格林尼治时间上午9 时,我国在英国东面,北京时间比格林尼治时间早7或8小时,我们就可以知道这次事情发生在相当于北京时间当日16或17时。

 

世界协调时UTC

UTC指的是Coordinated Universal Time,是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准。

 

夏令时DST

DST是Daylight Saving Time的缩写,称为阳光节约时,在我国称为夏时制,又称夏令时,是一种为节约能源而人为调整地方时间的制度。有些国家DST的使用时间较长,(如美国长达7个月)跨越了春夏秋等三个季节,因此简单地用夏时制的概念已经不能完全表达DST的确切含义了,所以有人也称其为节能时。

 

夏令时就是利用夏季天亮得早这一自然现象,人为地将时间提前一小时。这样就可以使人们早起早睡,以充分利用光照资源,减少照明时间,从而节约照明用电。

 

CST

CST可以表示为美国,澳大利亚,中国,古巴的标准时间:

美国中部时间:Central Standard Time (USA) UT-6:00

澳大利亚中部时间:Central Standard Time (Australia) UT+9:30

中国标准时间:China Standard Time UT+8:00

古巴标准时间:Cuba Standard Time UT-4:00

 

程序中可能产生的问题

生产工作中,可能由于操作系统、JVM、程序或数据库时区不一致,导致时间与预期不一样。这需要排查相应的时区设置:

 

操作系统时区

>date
Thu Nov 26 15:24:42 CST 2015
>date -R
Thu, 26 Nov 2015 15:25:00 +0800

表明这是一个东八区中国标准时间(China Standard Time UT+8:00)。

 

>cat /etc/sysconfig/clock 或者 cat /etc/localtime
ZONE="Asia/Shanghai"

查看系统时区,其中"Asia/Shanghai"为时区文件名,位于/usr/share/zoneinfo/Asia/Shanghai

 

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

重置系统时区, 即以"Asia/Shanghai"文件的时区作为系统时区。

 

JVM时区

缺省情况下,JVM会以当前系统时区为默认时区,也可以通过调整启动参数定义时区:-Duser.timezone=GMT+08,在tomcat中可以修改catalina.sh文件:

 

vi catalina_home/bin/catalina.sh
JAVA_OPTS="-Duser.timezone=GMT+08"

 

程序时区

TimeZone zone = TimeZone.getTimeZone("GMT+8:00");
TimeZone.setDefault(zone);

 

 

数据库时区(MySQL)

show variables like '%time_zone%';
system_time_zone  CST
time_zone         SYSTEM
 
修改文件my.cnf,在 [mysqld] 之下加入
default-time-zone = '+8:00'

 

参阅资料

时区:http://www.douban.com/note/147740972

Linux时区设置:http://www.cnblogs.com/xxpal/articles/816693.html

MySQL时区修正:http://blog.itpub.net/23490154/viewspace-1062503

分享到:
评论

相关推荐

    CCNA实验手册(一是认识和了解实验设备,二是熟悉配置和排错过程)

    在配置部分,读者将学习如何使用命令行界面(CLI)进行网络设备的初始配置,如设置时区、主机名、IP地址、子网掩码和默认网关。此外,还会涉及到VLAN、端口安全、STP(生成树协议)和HSRP(热备份路由协议)等高级配置...

    Linux系统标准化配置手册v1.2.pdf

    - 时间和时区:设置系统时间以及时区,例如选择“亚洲/上海”作为时区。 - 网络和主机名配置:启用网卡,手工配置网络设置,包括IPv4配置,设置地址、子网掩码、网关、DNS服务器等。修改主机名,并通过hostnamectl...

    CCNA第一、二学期实验

    这个认证主要涵盖了网络基础知识、路由与交换技术、网络排错等内容。对于初学者而言,通过CCNA的学习和实践,可以深入理解网络工作原理,并掌握实际操作技能。 本资源集合了CCNA第一学期和第二学期的实验内容,是...

    CentOS7.7操作系统安装

    - **时区设置**: 选择时区(如 Asia/Shanghai),建议关闭 Network Time。 - **键盘布局**: 默认即可,可根据需要进行调整。 - **分区配置**: - 选择 **手动分区** 和 **标准分区**。 - 创建 `/boot` 分区,大小约...

    win7系统apache和php的安装和配置

    - **错误排查**:遇到问题时,可以查看Apache的日志文件(位于安装目录下的`logs`文件夹内),以获取错误信息进行排错。 通过以上步骤,你可以在Windows 7操作系统上成功安装并配置Apache和PHP,为Web开发打下坚实...

    RED HAT LINUX 6大全

    2.4.4 设置时区 15 2.4.5 选择服务自动启动 15 2.4.6 配置打印机 15 2.4.7 超级用户口令 15 2.5 Red Hat软件包管理程序 16 2.6 小结 16 第3章 LILO 17 3.1 安装与配置LILO 18 3.1.1 安装或重新配置LILO 18 3.1.2 ...

Global site tag (gtag.js) - Google Analytics