时区解析及更改

时区解析及如何调整Linux下的时区
前言
今天发现Vmware中的Centos 6.0-64bit的系统时间和宿主机的时间相差好几个小时,调整系统时间后重新启动又给恢复过去了。于是就想弄明白到底是什么原因。时区又是什么,虽然这个基本常识在初中的地理课上有讲到,出国旅游都要倒时差,中国我都没有跑遍更别提出国了,当时真的没有太注意它的作用。现在既然工作中用到了就恶补一下吧。
几个关键词
世界时
世界时是最早的时间标准。在1884年,国际上将1s确定为全年内每日平均长度的1/8.64×104。以此标准形成的时间系统,称为世界是,即 UT1。1972年国际上开始使用国际原子时标,从那以后,经过格林威治老天文台本初子午线的时间便被称为世界时,即UT2,或称格林威治时间 (GMT),是对地球转速周期性差异进行校正后的世界时。
原子时
1967年,人们利用铯原子振荡周期极为规律的特性,研制出了高精度的原子时钟,将铯原子能级跃迁辐射9192631770周所经历的时间定为 1s。现在用的时间就是1971年10月定义的国际原子时,是通过世界上大约200多台原子钟进行对比后,再由国际度量衡局时间所进行数据处理,得出的统 一的原子时,简称TAI。
世界协调时
世界协调时是以地球自转为基础的时间标准。由于地球自转速度并不均匀,并非每天都是精确的86400原子s,因而导致了自转时间与世界时之间存在 18个月有1s的误差。为纠正这种误差,国际地球自转研究所根据地球自转的实际情况对格林威治时间进行增减闰s的调整,与国际度量衡局时间所联合向全世界 发布标准时间,这就是所谓的世界协调时(UTC:Coordinatde Universal Time)。UTC的表示方式为:年(y)、月(m)、日(d)、时(h)、分(min)、秒(s),均用数字表示。
GMT
GMT 是 Greenwich Mean Time 的缩写,译为中文为“格林威治标准时间”或“格林尼治标准时间”,直译的话,可译为“格林威治平时”或“格林尼治平时”。这里的格林威治位于英国伦敦东南方向的泰晤士河畔。总的来讲,它的出现就是为规范全球各地区的时间,各国都以一个固定时间为参照点来计算当地时间。为此1884年美国华盛顿特区召开国际经线大会,确定格林威治就是东西经零度的地方。人们将地球人为的分为24等份,每一等份为一个时区,每时区横跨经度15度,即时间上正好是1小时,以格林威治所在地的时区为中时区,我们现在假设GMT时间为1月10日凌晨(即0点整),往西一个时区,则减去一小时,则当地时间是1月9日夜晚23点整,往东一个时区,则加上一小时,则当地时间是1月10日凌晨1点,依次类推,中国在东经120度上,可以这样计算,(东经120°-东经0°)所得度数再除以15,即得8,所以中国在东八区上,那么,此时中国就是1月10日早上8点整。
UTC
UTC 是 Coordinated Universal Time 的缩写,译为中文为“世界标准时间”,直译的话,可译为“协调通用时间”或“协调世界时间”。目前来说也就是指 GMT 时间。为什么说目前就是指 GMT 时间呢?因为本初子午线(子午线即经线,本初子午线即 0 度经线)其实穿过的是沙特阿拉伯西边的麦加,而不是英国的格林威治。当时英国皇家学会暂时确定格林威治为本初子午线的穿过点﹐加之英国正是兴旺发达时期,全世界就将错就错,用到现在。说不定哪天改为麦加时间为标准时间也不是没有可能。所以我们一般使用 UTC,而不是 GMT。
PDT
PDT 是 Pacific Daylight Time 的缩写,译为中文为“太平洋夏令时间”,比 UTC 时间晚 7 小时。Google 曾在其 AdSense 中提到“在 09-6-13,我们的工程师会在 PDT 大约 上午10:00 到 下午2:00 对网站进行维护。”
PST
美国夏季始于每年4月的第1个周日,止于每年10月的最后一个周日。夏令时比正常时间早一小时,与PDT时间相对应的是PST,Pacific Standard Time。 夏时制结束后就是PST。PST是太平洋标准时间(西八区),与北京时间(东八区)时差-16个小时,也就是北京时间减去16就是PST时间。而PDT比PST早1个小时,就是说PDT与北京时间时差为-15小时
其实除了 PDT,PST 时间,北美地区还有很多时间:
缩写  全称  中文说明
NST  Newfoundland Standard Time  纽芬兰标准时间
NDT  Newfoundland Daylight Time  纽芬兰夏令时间
AST  Atlantic Standard Time  大西洋标准时间
ADT  Atlantic Daylight Time  大西洋夏令时间
EST  Eastern Standard Time  东部标准时间
EDT  Eastern Daylight Time  东部夏令时间
CST  Central Standard Time  中部标准时间
CDT  Central Daylight Time  中部夏令时间
MST  Mountain Standard Time  山地标准时间
MDT  Mountain Daylight Time  山地夏令时间
PST  Pacific Standard Time  太平洋标准时间
PDT  Pacific Daylight Time  太平洋夏令时间
AKST  Alaska Standard Time  阿拉斯加标准时间
AKDT  Alaska Daylight Time  阿拉斯加夏令时间
HAST  Hawaii-Aleutian Standard Time  夏威夷-阿留申标准时间
HADT  Hawaii-Aleutian Daylight Time  夏威夷-阿留申夏令时间
Linux下时区调整
查看当前时区
[root@bogon ~]# date -R
Tue, 09 Apr 2013 20:04:40 +0800
复制相应的时区文件,替换系统时区文件;或者创建链接文件
格式:cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime
方法一:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
方法二:ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
Ps:我就是采取第二种方式调整好centos中的时间的。
ZONE="America/Chicago"
UTC=true
ARC=false

    Linux修改时区和时间(1)

Linux修改时区和时间

修改时区:

1>

找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai 

用这个文件替换当前的/etc/localtime文件。 

或者找你认为是标准时间的服务器,然后

#scp [email protected]:/etc/localtime /etc/localtime

2> 

修改/etc/sysconfig/clock文件,修改为: 

ZONE="Asia/Shanghai" 

UTC=false 

ARC=false

修改日期时间

1> 

date修改日期时间

#date -s 08/24/2006

#date -s 13:02:00 

2> 

同步BIOS时钟,强制把系统时间写入CMOS

#clock -w

另外,查看Bois时间用 #hwclock -r 

#tzselect 可以交互式修改时

Linux修改系统时区

1. 查看当前时区

# vi /etc/sysconfig/clock

2. 修改设置时区

方法(1) # tzselect 方法(2 仅限于RedHat Linux 和 CentOS) # timeconfig

3. 复制相应的时区文件,替换系统默认时区

# cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime 

对于中国服务器则执行: # cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4. 将当前时间写入BIOS永久生效(避免重启后失效)

# hwclock

inuxshell下获取时间戳一般用两种方法,一是直接调用系统变量;二是用纯shell脚本获取,举例如下

一,直接调用系统变量

获取今天时期:date +%Y%m%d` date +%F

获取昨天时期:`date -d yesterday +%Y%m%d`

获取前天日期:`date -d -2day +%Y%m%d`

依次类推比如获取10天前的日期:`date -d -10day +%Y%m%d`

09-04 14:27