UTD/GMT & 本地时间


UTC和GMT

协调世界时(Coordinated Universal Time,UTC)格林尼治时间(Greenwich Mean Time,GMT)基本指的是一个时间,相当于是全世界的一个标准时间。全球被分为24个时区,伦敦处于0时区,以0时区为中心,向西(时间慢)减相应的时区即为西边国家的本地时间,向东(时间快)加相应的时区即为东边国家的本地时间。我们国家以北京时间为标准,而北京正好位于第8时区,所以北京本地时间为“UTC + 0800”。我们平常日常所使用的,无论是手表,手机,还是电脑上看到的时间基本都是属于北京时间。

Unix/Linux系统内部对时间的表示方式是以自Epoch(Epoch就是UTC的1970年1月1日早晨零点)以来的秒数来度量的,该种表示方式的秒数被称为日历时间(Calendar Time),又被称为Unix时间戳

时区和夏时令

前面说过,全球被分为24个时区(Time Zone,TZ),0时区位于英国伦敦,每个国家都位于不同的时区内,比如我们国家就位于东8时区。


另外还有一些国家会使用夏时令(Daylight Saving Time,DST),说简单点DST就是某些国家为了节约能源而制定的一个统一的本地时间的制度,各个采纳夏时制的国家的具体的规定有所不同。

我们都知道夏天天亮的比较早,黑的比较晚,因此某些国家为了节约能源,在夏天的时候就规定将时间拨快1小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。如果我们使用夏令时间,原先6点下班的,现在5点就可以下班了,然后第二天就要早起一个小时,原先9点上班的,现在就需要8点上班了。

本地时间

不同的国家(有时甚至是同一个国家的不同地区)使用不同的时区和夏时制,都有属于自己本地的统一的或标准的时间(但是都是以UTC为基准的),这就是所谓的本地时间

现在有一个问题,那就是计算机内部不是用日历时间表示的么?而我们日常在电脑上看到的都是本地的标准时间,这是怎么回事?这个问题可以用下面的一副图来表示:


上图中的“时间戳”可以想成是由硬件产生的时间,而中间的黑盒子就表示操作系统,操作系统通过硬件得到时间,然后根据当前计算机中的一些本地化配置,将其转化为各个国家的本地时间,从而我们在屏幕上看到的就是一个本地化的时间。

那么操作系统是如何实现这个转化的过程的呢?作为一个程序员,我们如何编写与时间相关的程序呢?

下图就是Unix/Linux中常用的时间转化图,这里就不详细说了,用到的时候再具体查看各个函数的用法。


以上算是对Unix/Linux中时间相关的一些基础知识的记录。



欢迎您扫一扫上面的二维码,订阅 CodingJourney 的微信公众号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值