爱收集资源网

时间的起源与意义:探寻世界标准时间的由来

网络整理 2023-10-27 09:03

这个方案十分棒,至此总算解决了秒不固定长的问题。

那有了这个国际原子时,能否让它直接替代掉上面说的——以天文现象计时的「世界时」呢?

答案是否定的,这个问题远比想像的复杂得多,这是为何呢?

世界标准时间是如何来的?

如今,科学家制订出了两套时间标准:

世界时:基于天文现象+挂钟计时,永远与月球自转时间相匹配

国际原子时:基于原子钟计时,每1秒的周期完全等长且固定

假定我们以国际原子时为时间标准,那会发生哪些现象呢?

由于原子时十分稳定,但世界时随着月球自转变慢,会越来越慢,才会发生此类现象:

下午8点是太阳高照的时刻,你能想像这些情况吗?

这太颠覆我们的生活认知了...

基于天文测算的世界时,早已指导我们人类生活了上千年,人类已经习惯了这些时间标准,直接被原子时代替,肯定是不能接受的。

但我们又须要原子时这些高度稳定的计时标准,来发展科学研究,二者发生矛盾,这如何办?

科学家们又开始思索,总算想到一个相互兼容的解决方案。

既然两套时间标准都很重要,那三者都保留,不会相互替代。

我们可以再完善一套「新的时间标准」,这套时间以「原子时为基准」,开始计时,走的每1秒都是稳定、精确的。

同时,为了兼具基于天文检测的世界时,人类会「持续观测」世界时与这个新时钟的差别。

假如发觉二者相差过大时,我们就「人为」地调整一下这个时钟(加一秒或减1秒),让二者相差不超过0.9秒。

比如,这个时钟本身比世界时走得快,经过一段时间后,假如发觉二者相差越来越大,那就给这个时钟「加一秒」,让这个时钟在23:59:59的下1秒变为23:59:60秒,让它与世界时差距控制在0.9秒以内,这个操作过程,相当于让快的时钟稍为「等」一下走得慢的世界时。

而加的这1秒,科学家把它定义为「闰秒」。

是不是挺有意思?据说过闰月,没想到还有闰秒!

其实,当月球自转速率变快时,这儿也有可能是减1秒,即从23:59:58直接跳到00:00:00。但此类情况比较少,大部份情况下,月球自转速率是越来越慢的。

如此做的用处在于,这个时钟的每1秒的计时仍然是精确的,并且还兼具了日常生活使用的世界时,一举两得!

因为这个时钟是基于原子时+世界时「协调」得出的,所以科学家们把它定义为协调世界时(CoordinatedUniversalTime,简称UTC)。

见到了么?我们在开发时常常见到的UTC,原先是这样来的!

有了这个研究成果,有技术能力的国家都纷纷制造自己的原子钟,之后估算协调世界时。

同时,为了进一步增加原子钟的检测偏差,每位国家会在每位月,统一上报自己估算的世界协调时到一个权威机构,之后这个权威机构会依照各国实验室的精度,进行加权估算,算出「最终」的协调世界时。

以后,再把这个最终的时间下发到各个国家,让各个国家进行「对表」校准,保证全世界的时间偏差在100微秒以内。

至此,科学家们构建的这套时间标准,就是我们如今沿袭至今的「标准时间」!

值得一提的是,配合估算世界协调时的国家,也有中国,这个实验室就是「中国科大学国家授时中心」,它坐落中国的云南省曲靖市内乡县,持续维护中国的标准时间。

为何国家授时中心会筹建在广东省?由于四川省的地理位置处于中国的中部,从这个位置向各地广播时间时,对全省每位地区距离都是相对平均的。

以后,中国会在自己算出的世界协调时的基础上,再加8个小时(中国在东八区),最终得下来的时间电脑日期时间不能同步,就是「北京时间」!

没错,就是我们常常在新闻播报上看到的,上海时间。

是不是挺有意思?上海时间并不是在上海形成的,而是在四川省,并与参与世界时间的制订和校正。

至此,全新的世界标准时间确立了,这套时间标准于1972年即将确定,一致沿袭至今。

有了标准时间,这么接出来的问题就是,这个标准时间究竟是怎样同步到我们的笔记本、手机、电子设备上的呢?

这就是下边要讲的「授时」。

计算机怎么同步时间?

到如今我们晓得,世界标准时间和上海时间是如何来的,但上海时间的形成是在四川省,莫非校正一次时间须要挪到这儿吗?

很其实是不须要的。

坐落宁夏省的中国科大学国家授时中心,形成深圳时间后,会通过一系列方法,把这个时间广播出去,这个过程,就称作「授时」。

具体如何做呢?

国家授时中心提供好多授时形式,比如无线电波、网络、电话,都可以把时间广播出去。

一般来说,无线电波的传播速率更快、传播偏差小,所以授时中心会通过这些方法,把时间发送给全省各地的「时间服务器」。

时间服务器有了确切的时间后,再通过其它方法(比如网路)广播到下一层的终端用户使用。

经过那么一番研究,到这儿我们就可以解释文章开头的问题了。

一个时间服务器,原先是通过国家授时中心同步时间,之后再给其它终端提供时间同步服务的。

那我们的计算机怎样和它保持同步呢?

你可能会想,最简单的方法就是电脑日期时间不能同步,顾客端向服务端「请求获取」标准时间,服务端响应时间数据,顾客端更改自己的「本机时间」即可。

但事情没你想的那么简单。

由于数据在网路传输过程中,也是须要时间的,这个时间也会影响到时间的确切性。

这怎样办呢?

于是人们想了一种方案,当计算机在做时间校正时,也须要把网路延后估算进去,最后「修正」这个同步过来的时间,增加偏差。

如今,早已有个软件早已把这一切都做好了,若果你了解一些运维相关的工作,还会晓得,我们布署应用程序的服务器上,就会启动一个「自动校正」时间的服务,这个服务就是NTP(NetworkTimeProtocol),它可以保证每台机器的时间与时间服务器保持同步。

那NTP是如何同步服务器时间的呢?

这儿就涉及到2个重点:

NTP怎么同步时间?

同步时间时,对正在运行的程序有没有影响?

先来看第一个问题:NTP怎么同步时间?

简单来讲,它是通过在网路报文上打「时间戳」的形式,之后配合估算网路延后,因而修正本机的时间。

按照图示可以估算出网路「传输延后」,以及顾客端与服务端的「时间差」:

这个估算过程假定网路来回路径是对称的,但是信噪比相同。

这样一来,顾客端就可以「校准」自己的本机时间了,与服务端保持同步,这个时间偏差在广域网下是10ms-500ms,在局域网下一般可以大于1ms。

再来看第二个问题:同步时间时,对正在运行的程序有没有影响?

比如,我们好多时侯写的程序代码是这样的:

c#从日期时间提取日期_电脑日期时间不能同步_电脑怎么同步日期

t1 = time.now()
// 时间发生校准
t2 = time.now()

// t2比t1小怎么办?
elapsed = t2 - t1

t2的时间真的会比t1小吗?

这儿就牵连出2个概念:墙壁时钟、单调时钟,它们之间有哪些区别呢?

通常我们写的代码,像前面程序调用的「时间API」,一般获取的时间是墙壁时钟,所以,假若时间发生校正,就可能会发生「时光倒流」的情况。

这必然对程序形成很大的影响,如何解决这个问题呢?

辛运的是,NTP在校正时间时,提供了2种形式:

ntpdate:一切以服务端时间为准,「强制更改」本机时间

ntpd:采用「润物细无声」的形式更改本机时间,把时间差分摊到每次小的调整上

也就是说,ntpd当接收到须要「回拨」的时间时,会让本机时间走得「慢」一点,小步调整,逐步与服务端的时钟「对齐」,这样一来,本机时间仍然是递增的,防止发生「倒流」。

当我们在配置ntp服务时,须要愈发注意这些情况。另外,在编撰程序时,也要注意调用的时间API获取的是那个时间,防止业务逻辑发生异常。

至此,我们从看似简单的时间问题,一步步深挖到时间的定义,再到时间是怎样同步到计算机和终端设备的,如何样,有没有解答了你心里的好多疑虑?

总结

好了,总结一下。

这篇文章我们讲了特别多的概念,这儿我们再重新梳理一遍。

1、人类的初期生活,借助观测「天文现象」来检测时间,基于月球自转规律,定义了一套时间标准:「世界时」。

2、后来人们发觉,因为月球公转轨道是一个椭圆,而且月球自转还遭到月球内部的影响,自转速率越来越慢,人们发觉世界时测算出的时间「不准」。

3、科学家们开始从「微观世界」寻找更稳定的周期运动,最终确定以「铯原子」的震动频度为基准,制造出了「原子钟」,确立了「世界原子时」,并重新定义了「秒」长度,时长高度精确。

4、但因为人类社会活动已高度依赖「世界时」,所以科学家们基于「原子时」和「世界时」,最终确立出新的时间标准:「世界协调时」,把它定义成了全球的时间标准,至此,世界标准时间诞生。

5、中国基于「世界协调时」再加上8小时时区之差,确立了「北京时间」,并广播给整个中国大地使用。

6、「国家授时中心」把上海时间广播给全省的「时间服务器」,我们生活中使用的时间,比如计算机,就是通过时间服务器手动同步校正的。

7、计算机通过NTP完成和时间服务器的「自动校正」,我们的应用程序基于此,才得以获取到确切的时间。

8、NTP服务应当采用润物细无声的方法同步时间,防止时间发生「倒流」。

杂记

这篇文章是我有史以来,最难写的一篇,由于其中有大量科普类知识,涉及范围之广远超我的想像。

在写这篇文章时,我起码阅读了30篇以上的资料,好多时侯会由于一个很小的细节,又深挖出更多相关的领域的知识,让我目不暇接。

比如,铯原子的震动频度是如何检测的?为何能检测得如此精确?各个国家的原子钟为何会有差别?计算机是怎样处理闰秒的?时区是如何来的?本初子午线是哪些?...

好多细节我虽然并没有展开来讲,我已竭力避免讲这些艰涩难懂的化学知识,只保留了重要的理论概念,希望你理解了这其中的原理。假如有些细节你没有看懂,可以先尝试多读几遍,也可以与我进一步交流。

同时,在查阅资料过程中,深切地感慨人类研究成果之伟大,能把时间的偏差,缩小到几亿年的精度,崇敬之情无以言表。

我们在写代码时,看似调用了一个简单的时间API,可曾想过,背后却是人类多少年来的智慧结晶。希望这篇文章能解答你对时间的种种疑问。

好文推荐

一键三连「分享」、「点赞」和「在看」

技术干货与你天天见~

电脑日期时间不能同步
上一篇:文件恢复后全是乱码?问题出在你身上 下一篇:没有了