时区划分
由于地球自转的关系(自西向东),所以东边比西边先看到太阳。在同一时刻东边可能是清晨,西边可能是深夜,对这一时刻的描述就会造成混乱,即时间定义的混乱。
为了克服时间上的混乱,于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
相关推荐
"cisco packet tracer排错实验集合"是一个针对网络初学者和专业人员的宝贵资源,包含了26个精心设计的实验,覆盖了各种网络排错场景。 实验一至二十五:这些实验可能分别涵盖了不同的网络问题,例如路由问题、...
《易语言文本排错工具详解》 易语言,作为一款以“中国人自己的编程语言”为目标设计的编程工具,以其简洁的语法和贴近自然语言的特点,深受广大编程爱好者的喜爱。在编程过程中,文本处理是一项基础且重要的任务,...
在Linux系统中进行故障排查是一项重要且复杂的技能,它要求系统管理员对Linux系统有深入的理解,并掌握多种诊断和排错工具。以下是从给定文件中提取的Linux排错相关知识点。 首先,故障分类是排错的第一步,它有助...
CCIE-LAB考试排错(上) 很详细的考试说明与实例
【Windows编程高效排错】这篇文章主要探讨了在Windows环境下如何高效地进行用户态程序的调试与问题解决。作者熊力通过一系列的实际案例,分享了排错的方法、技巧和经验。 文章首先强调了排错的重要性,指出无论是...
路由器故障排错入门 路由器故障排错入门
### Windows用户态程序排错——重要知识点解析 #### 一、引言 在软件开发、测试及技术支持领域,遇到程序行为不符合预期的情况是家常便饭。这些情况往往需要我们运用排错技巧来定位问题所在并加以解决。《Windows...
在电脑使用过程中,遇到问题和故障是常有的事情,这时我们就需要借助一些排错命令来诊断和解决问题。本文将详细讲解几个常用的电脑排错命令及其应用,并简要介绍压缩包中包含的相关工具。 1. **命令提示符(CMD)与...
50种电脑排错,很简单的,看看照着操作就能懂
路由交换理论排错讲解
很有参考价值一份排错报告,H3CTE考试满分1000分,其中排错报告300分,写好报告是关键的一部分。
cacti的安装 cacti的维护 cacti的排错
然而,任何复杂的系统都可能遇到问题,当Oracle数据库出现错误时,有效的排错和恢复策略至关重要。"Oracle排错流程图"提供了这样的指导,帮助DBA(数据库管理员)快速定位和解决可能出现的问题。 该流程图由资深的...
华为排错专家教程 华为排错专家教程 华为排错专家教程
活动目录排错必读文档,活动目录排错必读文档 关方的KB等等.
这是一篇介绍Windows系统上User Mode程序的排错 (troubleshooting) 方法和技巧的文章。 无论是开发,测试还是支持,都会遇上程序运行结果跟预期效果不一致的情况。找到问题的根源和解决的过程,就是排错。同时,...
Centos7网卡报错排错解决Word
MySQL排错指南是2015年夏天引入中国的书籍,这本书可以说是DBA速成指南,介绍的内容其实比较简单,但是也非常实用,对于DBA这个讲究经验的工种,这本书就是传授经验的,可能对有较多工作经验的DBA来说,这本书基本...
【H3CTE排错实验】是针对华为认证的高级技术专家(H3CTE)进行的一项重要技能训练。在这一实验中,你将深入学习和实践如何解决华为网络设备中遇到的多协议(Multi-Protocol,MP)相关的问题。排错是网络运维中的关键...
《MySQL排错指南》是一本专门针对MySQL数据库系统在运行过程中遇到问题的解决方法和技巧的书籍。PDF格式使得读者可以方便地在电子设备上阅读和检索内容。MySQL作为世界上最流行的开源关系型数据库管理系统,其广泛...