【编程科普】为何电脑的时间有时候走不准?一秒到底有多长?

这篇文章我想和你聊一聊「时间」这个话题。

时间总是在不经意间流逝,我们在写代码时,也经常会调用「时间 API」,你有思考过这背后的原理吗?

【编程科普】为何电脑的时间有时候走不准?一秒到底有多长?_第1张图片

文章来源:微信公众号丨水滴与银弹,但笔者并未找到原文链接,原作者可私信联系

关于时间的问题还有很多,例如:

为什么计算机的时间有时候「走不准」?

计算机究竟是怎么「自动校准」时间的?

我们经常看到的 UTC 时间,到底是什么?

我们在新闻上看到的「北京时间」,真的来自北京吗?

这篇文章,我们就来揭秘时间背后的秘密。

这篇文章非常有意思,希望你可以耐心读完。

【编程科普】为何电脑的时间有时候走不准?一秒到底有多长?_第2张图片

时间为什么总是走“不准”?

你肯定遇到过这样的场景,家里买了一个钟表,时间一长,就会发现它走得「不准」了。

又或者,一台长时间不使用的电脑,它的时间也会发生偏差。

遇到这些情况,你可能会不以为然。时间不准,那我们就「人工」调准它。

但你有没有停下来想一想,为什么它们的时间会越走越不准呢?

要回答这个问题其实不难,我们只需要搞清楚,它们的时间是怎么来的。

钟表和计算机内部都有一个叫做「晶体振荡器」的东西,给它加上电压,它就会以固定的频率振动。但这个振动频率的「稳定性」,取决于它的制造工艺,以及外界环境的影响。

出于成本的考虑,钟表的制作工艺没那么高,所以它更容易有误差。而电脑制造工艺虽然比较高,但它内部的晶体振荡器也会受到「温度」变化带来的影响,在工作过程中,也会有产生误差。

虽然它们的误差很小,但日积月累下来,误差就越来越明显。

因此,我们现在使用的计算机,都有「自动校准」时间的功能。但是如何校准呢?

如何校准时间?

很简单,只要你把电脑连上了「网络」,你会发现,它会自动与「网络时间」保持同步。

可问题是,这个「网络时间」哪儿来的?

我猜你大脑的第一反应是,每台电脑肯定配置了一个「时间服务器」,之后这台电脑会与服务器定时同步,自动校准。

没错,确实是这样,不光是电脑,我们平时使用的手机、平板、智能手表等电子设备,只要能连接网络,都会自动同步网络时间。

那继续追问,这个「时间服务器」的时间就一定是准的吗?

理论来讲,它应该也是一台计算机,难道它不会遇到我们前面说的问题吗?

此外,这个网络时间究竟是怎么「同步」到我们的电脑上的?

你可能会说,那肯定是通过网络数据包。

问题又来了,网络传输数据也是有「延迟」的,同步服务器时间,不还是存在误差吗?

环环相扣,像一个俄罗斯套娃,很难解释清楚。

要想彻底搞清楚这些问题,就要深入到时间的「源头」来寻找答案。

【编程科普】为何电脑的时间有时候走不准?一秒到底有多长?_第3张图片

时间是怎么来的?

时间是一个非常抽象的概念,多少年来,吸引着无数科学家、物理学家、甚至哲学家花费毕生精力去解释时间的本质是什么,从宇宙大爆炸到时空相对论,从黑洞到量子力学,都能看到关于时间这个问题的身影。

这里我们不探讨高深莫测的学术知识,只把目光放聚焦在计算机这个很小的范畴内。但要想清楚解释这个问题,也并非想的那么简单。

我们从最简单的开始说起。

想要知道时间是怎么被定义的,首先要知道「天」是怎么来的?

答案是:观察太阳

由于地球的「自转」,人们可以看到日出日落,人们日出而作,日落而息,所以就把这一周期现象定义为「天」。

地球除了自转,还在围绕太阳公转,所以公转一周就被定义为一「年」。

从这些现象就能看出来,很早之前的人们,是以「天文现象」来确定时间的。

再后来,人们为了把时间定义得更「精确」,就把一天平均划分为 24 等份,这就是「时」。

同样地,把 1 小时划分 60「分钟」,1 分钟划分为 60「秒」。

这样,时间的基本单位「秒」就被定义出来了。

所以,秒与天的关系就是这样的:

1 秒 = 1 / 24 * 60 * 60 = 1 / 86400 天

这些定义,都与「地球自转」和「太阳」息息相关。

但是,后来人们发现࿰

你可能感兴趣的:(电脑知识,程序人生,计算机,科普,时间校准,编程)