【转载】关于时间、时区、系统时间和硬件时间

(文章为转载,针对部分表达不明确或错误的地方进行了修正) 

时区(Time Zone)是用于划分地球上、使用同一时间定义的区域而产生的概念。
1884年在华盛顿召开国际经度会议时,为了克服时间上的混乱,规定将全球划分为24个时区。

一、以下是一些术语的解释

格林威治标准时间 GMT
十七世纪,格林威治皇家天文台为了海上霸权的扩张计划,而进行天体观测。1675年旧皇家观测所(Old Royal Observatory) 正式成立,到了1884年决定以通过格林威治的子午线作为划分地球东西两半球的经度零度。观测所门口墙上有一个标志24小时的时钟,显示当下的时间,对全球而言,这里所设定的时间是世界时间参考点,全球都以格林威治的时间作为标准来设定时间,这就是我们耳熟能详的「格林威治标准时间」(Greenwich Mean Time,简称G.M.T.)的由来,标示在手表上,则代表此表具有两地时间功能,也就是同时可以显示原居地和另一个国度的时间。

世界协调时间 UTC
多数的两地时间表都以GMT来表示,但也有些两地时间表上看不到GMT字样,出现的反而是UTC这3个英文字母,究竟何谓UTC?事实上,UTC指的是 Coordinated Universal Time- 世界协调时间(又称世界标准时间世界统一时间),是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以「世界标准时间」的角度来说,UTC比GMT来得更加精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。所以基本上UTC的本质强调的是比GMT更为精确的世界时间标准,不过对于现行表款来说,GMT与UTC的功能与精确度是没有差别的。

夏日节约时间DST
所谓「夏日节约时间」Daylight Saving Time(简称D.S.T.),是指在夏天太阳升起的比较早时,将时钟拨快一小时,以提早日光的使用,在英国则称为夏令时间(Summer Time)。这个构想于1784年由美国班杰明·富兰克林提出来,1915年德国成为第一个正式实施夏令日光节约时间的国家,以削减灯光照明和耗电开支。 自此以后,全球以欧洲和北美为主的约70个国家都引用这个做法。

系统时间
一般说来就是我们执行 date 命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间。

硬件时间
主板上BIOS中的时间,由主板电池供电来维持运行,系统开机时要读取这个时间,并根据它来设定系统时间(注意:系统启动时根据硬件时间设定系统时间的过程可能存在时区换算,这要视具体的系统及相关设置而定)。

世界时间
(Universal Time)世界标准时间即UTC。

地方时间
(本地时间,Local Time)由于处在不同的时区,本地时间一般与UTC是不同的,换算方法就是:
本地时间 = UTC + 时区 或 UTC = 本地时间 – 时区

二. 在Linux中查看系统时间

?


1

2

3

4

5

6

# date

FriNov723:21:34 CST 2014   //本地时间

# date -R

Fri,07Nov201423:21:35+0800 //本地时间,RFC2822格式

# date -u

FriNov715:21:37 UTC 2014   //UTC时间


CST是什么意思?

其实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

因此查看linux系统时间,我还是建议使用后两种方式。

如何去掉hwclock中显示的CST?
执行hwclock命令之前,添加环境变量”export LANG=C”

?


1

2

3

4

5

# hwclock

Sun09Nov201407:38:25 PM CST -0.161066 seconds

# export LANG=C

# hwclock

SunNov919:38:352014-0.813925 seconds

三. 在Linux中查看硬件时间(BIOS时间)

使用命令可以查看BIOS硬件时间:

?


1

# hwclock --localtime

但因为BIOS里面没有时区的设置,因此有两种时间设定方法。

  • UTC=yes 存储UTC时间
  • UTC=no  存储本地LOCAL时间

查看系统是否启用了UTC方法如下:

  • UTC=false or UTC=true        in file /etc/sysconfig/clock,RHEL5
  • LOCAL or UTC                       in file /etc/adjtime,last line,RHEL6
  • UTC=no or UTC=yes             in file /etc/default/rcS,Debian6,Squeeze.
  • LOCAL or UTC                       in file /etc/adjtime,last line,Debian7,Wheezy.(ifnot exist,excute hwclock --adjust)

若系统启用了UTC,则显示如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

# export LANG=C

# tail -1 /etc/adjtime

UTC

 

# date -R

Sun,09Nov201419:36:05+0800

 

# hwclock

SunNov919:36:062014-0.031592 seconds

 

# hwclock --localtime

SunNov911:36:072014-0.672380 seconds //BIOS里面存的是UTC时间

若未启用UTC,则显示如下: 

?


1

2

3

4

5

6

7

8

9

10

11

12

# export LANG=C

# tail -1 /etc/adjtime

LOCAL

 

#date -R

Sun,09Nov201419:32:12+0800

 

#hwclock

SunNov919:32:132014-0.725862 seconds

 

#hwclock --localtime

SunNov919:32:142014-0.995411 seconds //BIOS里面存的是LOCAL本地时间

四、Windows和Linux双系统造成时间问题

      有很多人安装了双系统Linux+Windows会发现其中一个系统时间不准。这是因为Windows默认不使用UTC,需要将Linux中的UTC关闭。当然网上有人修改windows的注册表将UTC打开,也是一样的,但我没试过。

五、改动UTC造成的问题

可能存在如下情况

  • 原系统设置是 “UTC=yes”,重装了系统之后采用了”UTC=no”或者相反的操作。
  • 将操作系统设置“UTC=yes”的磁盘,插入原先操作系统”UTC=no”的服务器并采用新插入盘启动。

这些情况都可能会导致时间不一致。

解决办法是用ntpdate同步网络时间,并写入硬件BIOS。

比较混乱的情况下还要指定把哪个时间写入BIOS(尚未测试)

?


1

2

# hwclock --systohc --localtime //将LOCAL时间写入BIOS。适用于UTC=no

# hwclock --systohc --utc       //将UTC时间写入BIOS,适用于UTC=yes

六、参考文章

http://www.sealinger.com/archives/221/
http://hi.baidu.com/lujunqianglw/blog/item/bc2d9144d24fc48fb3b7dc1d.html
http://www.huawei.com.cn/ecommunity/bbs/10143547.html

原文地址:http://www.ipcpu.com/2014/11/time-and-more/

时间: 2025-01-01 17:34:47

【转载】关于时间、时区、系统时间和硬件时间的相关文章

Linux时间时区、常用时间函数、整形时间计算思路详解

Linux时间时区详解与常用时间函数 时间与时区 整个地球分为二十四时区,每个时区都有自己的本地时间. Ø  UTC时间 与 GMT时间 我们可以认为格林威治时间就是时间协调时间(GMT = UTC),格林威治时间和UTC时间都用秒数来计算的. Ø  UTC时间与本地时间 UTC + 时区差 = 本地时间 时区差东为正,西为负.在此,把东八区时区差记为 +0800 UTC + (+0800) = 本地(北京)时间 Ø  UTC与Unix时间戳 在计算机中看到的UTC时间都是从(1970年01月0

Linux下修改时间时区的方法介绍

  以前一直用date设置,这次参考网上资料,终于整了个全的. Linux时钟分为系统时钟(System Clock)和硬件(Real Time Clock,简称RTC)时钟.系统时钟是指当前Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的时钟,这个硬件时钟可以在BIOS中进行设置.当Linux启动时,硬件时钟会去读取系统时钟的设置,然后系统时钟就会独立于硬件运作. Linux中的所有命令 (包括函数)都是采用的系统时钟设置.在Linux中,用于时钟查看和设置的命令主要有dat

Linux系统下的单调时间函数

欢迎转载,转载请注明出处:http://forever.blog.chinaunix.net 一.编写linux下应用程序的时候,有时候会用到高精度相对时间的概念,比如间隔100ms.那么应该使用哪个时间函数更准确呢?    1.time        该函数返回的是自1970年以来的秒数,显然精度不够,不能使用    2.gettimeofday        该函数返回的是自1970年以来的秒数和微秒数,精度显然是够了.我想有很多程序员也是用的这个函数来计算相对时间的,如果说系统时间因为nt

win7系统取消自动同步时间的功能

  细心的网友会在win7系统下对时间"巧妙"的变化会感到疑惑,很多时候我们在不同的地方上网所显示的时间是有区别的,在国内不是特别的明显,但是在国内和国外两地之间我们上网,系统时间有会变化的!这时因为在win7系统下,系统的时间轴自动通过当前网络所在地的时区,所以会给我们自动修改时间,那么有些用户不想让时间自动同步,那么我们应该如何取消同步时间的功能呢?下面看小编为大家带来的取消时间同步的方法! win7系统取消自动同步时间的功能1.首先单击键盘上的windows键或者是直接单击开始菜

web-IIS 日志时间和系统时间不一致,相差8小时,W3C格式如何能和系统时间相同步。

问题描述 IIS 日志时间和系统时间不一致,相差8小时,W3C格式如何能和系统时间相同步. 解决方案 IIS的LOG自动是应用的UTC时间,所以要自已加时区进行转换! 下面那个勾只是LOG的命名用本地时间而以!里面的LOG所记录的依然是UTC时间! 解决方案二: 关于windows IIS日志时间与系统时间相差8小时的问题 很多做过网站的朋友在分析IIS日志的时候会发现IIS日志的时间与计算机的系统时间不符,比如在中国时区就会相差8小时.具体原因是什么呢?网 上搜索的结果十有八九让人做如下操作解

win8.1系统开机黑屏时间过长怎么解决

  win8.1系统开机黑屏时间过长怎么解决 把系统的字体缓存服务windows font cache service设置成开机自动启动. 方法一 1.打开运行--输入services.msc,找到WINDOWS FONT CACHE SERVICE; 2.右击选择属性,选择开启方式为自动,确定!然后右击开启即可. 方法二 1.右击鼠标[这台计算机]-[属性]-[管理]-[服务和应用程序]-[服务]; 2.在窗口内找到[WINDOWS FONT CACHE SERVICE]项目,将其启动类型修改

win7系统怎么查看开机时间

  win7系统怎么查看开机时间           首先右键点击计算机,打开管理. 接着点击系统工具--事件查看器. 点击windows日志--系统. 点击右侧栏目中的筛选当前日志. 在筛选当前日志的窗口中输入事件来源eventlog,6005-6006.(eventlog表示开关,6005表示开机,6006表示关机) 接着我们就可以看到最近时间的开关机信息了.

设置win8登录系统密码错误锁定时间方法

  电脑现在在人们的生活和工作扮演着很重要的角色,里面有很多私人.不方便公开的信息.因此90%的用户都会设置登录密码,但是光是设置登录密码还不够,还要限制登录密码的输入次数.Win8系统也有这个安全设置功能,可是这个功能没有开启.那么我们应该怎样设置和开启登录错误次数的限制和系统锁定时间的功能呢?下面就有详细的介绍. 1.在Win8开始屏幕或者传统桌面中按快捷键"Win R",在运行窗口中输入"gpedit.msc",准备进入Win8系统组策略编辑器. 2.在Win

Win7系统怎么设置右下角时间显示农历、星期、温度、湿度等信息?

  Win7系统怎么设置右下角时间显示农历.星期.温度.湿度等信息? 我们先来看看Windows 7系统默认时间格式,显示当前时间+年月日,如下图: 下载第三方插件[软媒时间] 软件名称: 软媒时间 v3.1.6.0 免费最新绿色版 软件大小: 2.90MB 更新时间: 2016-04-17 设置右下角时间显示农历.星期.温度 启动[软媒时间],在电脑右下角任务栏上[软媒时间]右键,选择"设置",如下图: 进入软媒时间设置界面,再选择"显示设置"找到第一屏格式,如下