首页 > 其他分享 >简单聊聊计算机之中的时间

简单聊聊计算机之中的时间

时间:2024-06-12 12:13:17浏览次数:20  
标签:闰秒 计算机 闰年 NTP 之中 自转 地球 时间 聊聊

在工作中,程序员难免和时间打交道。那么时间背后的原理是什么呢?为什么会有闰年、闰秒呢?

昼夜的由来

我们先简单聊聊昼夜是怎么来的。

如果你高中时学过地理,那么应该会知道为什么有昼夜和四季,可以暂时略过本小节

首先,地球是一个球体(确切的说,是一个椭圆的球体)

太阳也是一个球体,只不过比太阳大得多。

当太阳发出的光,到达地球后,光照到的部分,天空就亮了起来。

那如果没被阳光的部分呢?天空就是黑的,也就是晚上。

就好比你拿一个手电筒,照着前面的柱子,那么被光照到的部分就是亮着的;柱子的背后就是黑的。

那为什么会有日夜交替呢?因为地球在自转,就跟一个陀螺一样:

地球自转

当东半球转到太阳光能照射到的地方的时候,东半球表现为就天亮了;

与此同时,在地球的另一面,西半球转入黑暗,表项为天黑了

时区的由来

由于有了自转,人们可以根据太阳的起落来判断时间。

但这样有一个问题:各地位置不同时间标准不一,造成时间上的混乱。

因此,人们划分了时区,经度每隔 15°,地方时相差 1 小时,目前,全球共分为 24 个时区。

这样,对于各个地区的人们来说,12 点都是正午时刻,不会出现广州是 12 点,但是地球的另一边也是 12 点,但是天已经黑了的情况。

在一些大酒店中,时常能看到多个时钟,就是指多个时区的闹钟:

▲ 酒店前台悬挂的不同时区时钟

▲ 酒店前台悬挂的不同时区时钟

但时区的划分,也有缺点,出国旅行的人,得倒时差,适应当地的生物钟。

四季的由来

为什么会有四季?因为地球在围绕着地球转圈圈:

公转

这个圈圈是一个椭圆。

当地球靠近太阳的时候,地球整体就会变暖,也就是夏天到了。

当地球远离太阳的时候,地球整体就会变冷,也就是冬天到了。

而地球围绕太阳转动一圈的时间,大概是 365 天。因此季节也就随之更替。

我们称地球围绕着太阳转圈圈的运动为公转。

当地球转到到某个地方的时候,其就会逐渐靠近太阳,表现为天气越来越热,我们称这个转折点为夏至;秋风、冬至、春风同理。

比如你家里有暖炉,当你靠近暖炉的时候,你会觉得变暖了;当你远离暖炉的时候,你会感觉变冷了。地球也是这样。

自转和公转的来历

地球为什么会自转?为什么地球会绕着太阳转?这个没有人知道。

为什么地球就一直转到了现在?因为惯性。好比你在地上转一个陀螺,可能转几分钟就停下来了;但为什么地球能转这么久?因为地球的质量太大了,惯性也非常大;并且在宇宙中阻力很小(在地面上,总得和地面有磨擦、和空气有摩擦,这些阻力都会使得陀螺转的速度降低)

图来自《盗梦空间》

举个例子:同样速度的货车和小车,他们的质量是不同的,惯性也不同;让两者同时停下来,需要耗费的能量也同;

如果让 2 个人去推小车,可能努努力能推动,并让小车有一定的速度(即使速度很小);但如果让 2 个人去推货车,可能推都推不动,因为质量相差太大了。

闰年的来历

地球围绕太阳转一圈不应该就是 365 天吗?其实不是的。地球绕太阳运行周期,目前为 365 天 5 小时 48 分左右。当 4 年过去了,我们认为已经过了 4 * 365 天,实际上已经过了大概 366 天了(5 小时 48 分 ≈ 6 小时,4 年就是多出了 4 * 6 个小时,也就是 24 小时,一天)。

因此,每隔 4 年,我们会在 2 月底添加一天,以确保时间的准确;这一年就有 366 天,我们称之为闰年。其他非闰年的时候,我们称之为平年。

如果我们不添加闰年的话,如果我们认为过去了 4000 年,但实际上已经过了 4000 年 + 4000 * 6 个小时,也就是 240 天, 8 个月…

假设目前我们认为应该是 3 月的,但实际上已经多过去了 8 个月,地球此时已经是秋天了,但日历上还是春天… 季节就对不上了。

为了方便,人们规定,当一个年份能被 4 整除的时候,这一年就是闰年。

但是,5 小时 48 分终究不是 6 小时,只是近似而已。因此,如果按照每四年一个闰年计算,平均每年就要多算出 11 分钟多(0.0078 天),这样经过四百年就会多算出大约 3 天来。因此每四百年中要减少三个闰年。人们约定,在这 400 年中,第 1 年是闰年,第 100 年、第 200 年和第 300 年不是闰年。 例如,2000 年是闰年,2100 年则是平年,2200,2300 年也是;但 2400 是闰年。现行公历中每 400 年有 97 个闰年。

所以目前闰年的判断方法为:年份是整百数时,必须是 400 的倍数才是闰年;不是 400 的倍数的世纪年,即使是 4 的倍数也不是闰年。这就是通常所说的口诀:四年一闰,百年不闰,四百年再闰。

那如何用代码判断是否闰年呢?以 Java 为例:

import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
		// 能被4整除却不能被100整除,或能被400整除的年份就是闰年!
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年份:");
		int i = sc.nextInt();
		if(i % 4 == 0 && i % 100 != 0 || i % 400 == 0) //与或 {
			System.out.println("是闰年");
		}
		else {
			System.out.println("不是闰年");
		}
	}
}

世界时:第一套时间标准

天是根据地球的自转来定义的:也就是地球自转一圈的时间

年是根据地球的公转来决定的:也就是地球绕太阳一圈的时间

为了更精确的计算时间,人们把一天平均划分为 24 等份,这就是小时 (在古代,用的是时辰)

同理,把 1 小时划分 60 分钟,1 分钟划分为 60 秒。

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

后来人们根据天和年的定义,制造了钟表,用来表示时间。

注意,这些定义,都与自转和公转息息相关。

在 1927 年,人们以基于「天文现象」+「钟表计时」,确立了第一套时间标准:世界时(Universal Time,简称 UT)。

世界时的缺点:不精确

前面我们说过,地球自转的原因可能没人知道;但地球会一直转下去吗?很可能不会。地球的自转的速度是在慢慢降低的...

地球从 46 亿年前诞生,大概每过一世纪,一昼夜的时间会增加 1.7ms。自转变慢了,意味着地球转动一周的时间变久了。换句话说,也就是在很久很久之前,地球的一天并不是 24 小时。例如在 2.4 亿年前,恐龙时期,一天大概 23 小时。

一只可爱的小恐龙

为什么地球自转会变慢?大部分原因是因为月球。月球引发的潮汐现象,会耗费地球的自转能量,降低自转的速度。其他影响自转速度的因素,还有地壳运动、冰川融化、地震等自然现象

这会导致什么问题呢?会导致时间不精确。例如,我们计算时间的时候,一天明明是 24 小时,但可能过了几年后,一天就不是 24 小时了....

同样的,1 秒也不太准确,因为 1 秒 = 1 / 86400 天。(24 小时 * 60 分钟 * 60 秒 = 86400 秒)

对于人们的基本生活,可能没有影响。毕竟人类诞生这么久了,没有时间的概念的时候,不也生活了很久吗?

但在一些需要精确计算时间的场景,这就变的很重要了。

例如,体育赛事中百分之一秒的差距就能决定胜负,炮弹的发射要精确在千分之一秒内发生,雷达技术甚至需要精确到百万分之一秒。尤其是卫星发射、火箭试验等航天领域,对高精度的时间系统也提出了越来越高的要求!还出现了多种时间单位:毫秒、微妙和纳秒

1s = 1000ms 毫秒 = 10 的 6 次方 us 微秒 = 10 的 9 次方 ns 纳秒

1ms = 1000 us 微秒

1 us = 1000 ns 纳秒

那么,有没办法解决这个问题呢? 除了观察昼夜和四季,是否有什么物质可以不收外界的影响,其运动的周期一直是稳定的呢?有的,原子。

原子钟:完全稳定的一秒

我们想要一个稳定的,不受外界影响的东西,其运动周期是稳定的,因为我们需要每一秒都是固定的,精确的。而以天文观测、地球自转为基础的时间测量,做不到这一点。

科学家们经过层层实验,找到了这样一种原子:铯(sè)原子,其内部的运动周期比其他原子更短,更稳定。

之后,科学家们就以之前定义的「秒」为基础,去测量一秒内这个铯原子内部电子周期运动的「次数」,测量出来的结果为 9192631770 次(91 亿 + 次)。

因此,在 1967 年,国际度量衡大会决定采用,以铯原子跃迁 9192631770 个周期,所持续的时间长度定义为 1 秒!注意,这个一秒是绝对稳定的,等长的,实现了精确的计时!(1 亿年误差不超过 1 秒)

不用太过深究怎么测量的,物理细节很多;我们这里不展开。

有了原子钟,人们基于原子钟又确立了一套新的时间标准,叫做「国际原子时」(International Atomic Time,简称 TAI)。

这套时间标准,能否直接取代之前数的世界时呢?情况没这么简单.......

世界标准时间:加个闰秒

目前,我们有两套时间标准:

  1. 世界时:基于地球自转和公转
  2. 国际原子时:基于铯原子的运动周期

假设我们以国际原子时为时间标准,取代了之前的世界时,会发生什么呢?

  1. 那就是两套时间标准的差距越来越大。因为世界时是越来越慢的(自转越来越慢),在几百年后,可能世界时还是 12 点,而原子钟可能是下午两点了……
  2. 其次,人们已经用了上千年的世界时,难以被其他时间标准取代
  3. 但我们又需要原子钟这种精确的计时

怎么办呢?那就各退一步吧!

科学家们重新创建一个时钟标准(第三者),先以原子钟计时;当世界时和原子钟相差 1 秒的时候,就人为的调整这个第三者的时间(添加或减少一秒),让两者的误差在 1s 内。

而加的这一秒,科学家把它定义为「闰秒 Leap Second」,也就是第 60 秒。

相当于让走得快的时钟“等”一会儿走得慢的时钟。

这样,我们的每一秒都是精确的,同时和世界时的误差也很小,一举两得。

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

至此,科学家们建立的这套时间标准,就是我们现在沿用至今的「​标 准 时 间​」!

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

PS:根据时区的划分,北京时间比 UTC 快了 8 小时,即 UTC+8

计算机如何同步时间:授时

有了 UTC 标准时间,那么我们平时的电子设备是如何同步时间的呢(电脑,手机,平板等)?

原理也很简单,就是有一个专门提供时间的服务器,各个电子设备通过接收该服务器发送的信息,调整自身的时间。当然实现起来还是有一点复杂的,因为网络自身也有延迟,这里暂时不展开。感兴趣的同学可以参考附注 1.

烦人的闰秒

闰秒是不是百害无一利呢?不是的,至少,在计算机行业里不是……

2012 年 Reddit 一次系统崩溃就因闰秒而起,时长超半小时。一组运行开源 Linux 操作系统的机器未能正确处理增添的闰秒,导致一连串服务器停止运行。

2017 年,美国云安全网络公司 Cloudflare 受闰秒影响,导致托管在该公司的部分网络资源暂时脱机。

不止一两家,浏览器 Mozilla、领英、点评网站 Yelp、澳洲航空均因闰秒出现过问题。

阿里云也曾发出的公告:2017 年 1 月 1 日闰秒调整公告

尊敬的阿里云用户,

您好,国际地球自转和参考系统服务地球定向中心(IERS)近日通过推特重申,国际标准时间 UTC 将在格林尼治时间 2016 年 12 月 31 日 23 时 59 分 59 秒(北京时间 2017 年 1 月 1 日 7 时 59 分 59 秒)之后,在原子时钟实施一个正闰秒,即增加 1 秒,然后才会跨入新的一年。

由于时差的原因,我国将在北京时间 2017 年 1 月 1 日的 7 时 59 分 59 秒和全球同步进行闰秒调整,届时会出现 7:59:60 的特殊现象。

期间对您的影响如下:

1、如果您的 ECS 云服务器上运行的应用程序和业务对系统时间没有依赖,可以忽略闰秒的影响。

2、如果您的 ECS 云服务器上运行的应用程序和业务对系统时间要求比较精确,并且您的 ECS 服务器上的 NTP 是使用阿里云默认 NTP 服务,闰秒调整可能会对您的应用或者业务造成一定影响。请仔细阅读阿里云 NTP 服务调整方案,评估一下风险,尽量避免。

阿里云的 ECS 云服务器的 NTP 服务采用忽略闰秒时刻的跳秒,缓慢同步消除闰秒带来的 1 秒误差的方案来面对闰秒事件。

详情点此查看

阿里云计算有限公司

2016 年 12 月 19 日

这里补充一下:NTP(Network Time Protocol)是一个自动校准时间的服务。

目前,科技公司凑合着弄的主流解决方案是——将多出的一秒分成很多个小段,在不影响运行情况下,悄悄插入时间中,将多出来的一秒「抹平」。

谷歌 Meta 等大厂均在使用此类方法。

当然,也有人选择直接暂停 NTP(网络时间协议)服务一秒钟,以此额外增加一秒。

每次调整,各家公司都出动大批技术运维来调整时间(如暂时关闭 NTP 等)、修改程序,避免当中出现 bug 影响业务。

Linux 之父,Linus Torvalds 曾对媒体提起该话题,也表示出对闰秒的无奈:它真的很烦人,且难以在常规环境下测试,就要交付给用户。

因此,Meta、谷歌、微软等巨头同 Linux 之父 Linus Torvalds,都提倡废除闰秒,还找来美国国家标准与技术研究院(NIST)和国际计量局(BIPM),帮他们背书,一同证明「废除」的合理性

It's time to leave the leap second in the past - Engineering at Meta

目前,预计是 2035 年废除闰秒,直到 2135 年,期间,计量学家们也在寻找更好的方案。

当然,也不是所有人都支持这个决定,例如俄罗斯:他们的卫星定位系统 GLONASS 也需要进行相应调整和重新设计,因此,他们希望闰秒取消时间推迟到 2040 年……

不过,2035 年这么久之后的事情,我们到时再看吧,说不定有更好的方案出现了呢

标签:闰秒,计算机,闰年,NTP,之中,自转,地球,时间,聊聊
From: https://www.cnblogs.com/PeterJXL/p/18243683

相关文章

  • 计算机指令寻址的方式
    指令寻址想象一下,你手里有一本故事书,你一页一页地翻,这就是顺序寻址。你每次翻到下一页,就像电脑里的程序计数器(PC)自动跳到下一条指令。但是,如果故事书里有个提示说“跳到第50页”,这就是跳跃寻址。可能是故事的某个部分需要提前或者延后讲,电脑里的程序也会这样,通过一些特殊的......
  • 50.基于SSM的停车场管理系统的设计与实现|基于SSM+ Mysql+Java设计与实现(可运行源码+
    内容概要:全套项目源码+详尽文档,一站式解决您的学习与项目需求。适用人群:计算机、通信、人工智能、自动化等专业的学生、老师及从业者。使用场景及目标:无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。项目代码经过调试测试,确保直接运行,节省您的时......
  • 聊聊GLM-4-9B开源模型的微调loss计算
    概述Github官方地址:GLM-4网上已经有很多关于微调的文章,介绍各种方式下的使用,这里不会赘述。我个人比较关心的是微调时的loss计算逻辑,这点在很多的文章都不会有相关的描述,因为大多数人都是关心如何使用之类的应用层,而不是其具体的底层逻辑,当然咱也说不清太底层的计算。可了解其......
  • 计算机毕业设计项目推荐,32127 爬虫-自驾游搜索系统(开题答辩+程序定制+全套文案 )上万套
    目 录摘要1绪论1.1研究背景1.2爬虫技术1.3flask框架介绍21.4论文结构与章节安排32 自驾游搜索系统分析42.1可行性分析42.2系统流程分析42.2.1数据增加流程52.3.2数据修改流程52.3.3数据删除流程52.3系统功能分析52.3.1功能性分析62.......
  • 计算机毕业设计项目推荐,32006 node 中国传统节日介绍网站(开题答辩+程序定制+全套文案
    基于node.js中国传统节日介绍网站 摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,中国传统节日介绍网站当然也不能排除在外。中国传统节日介绍网站是以实际运用为开发背景,运用软件工程原理和开发方法,采......
  • 计算机毕业设计项目推荐,29042 基于Web的医院护理管理系统的设计(开题答辩+程序定制+全
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,医院当然也不例外。医院预约管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进......
  • 计算机相关专业依旧值得选择
    2024年,计算机相关专业还值得选择吗?作为一名在校计算机科学与技术专业大学生,我认为,计算机相关专业依旧值得选择。方向一:行业竞争现状当前计算机行业不像之前发展全面和需求众多,任何事物都是会饱和的,随着计算机发展的越来越快,学习计算机的人越来越多,更是很多机构培训培养出来......
  • 985 计算机硕士,2024 暑期实习 0 offer 的教训反思!
    原文地址mp.weixin.qq.com牛客上看到一位师兄分享自己暑期0offer的教训,我觉得分析的挺好的,也是我们在准备面试的过程中容易出现的问题,应该尽量去避免。我身边看到有的研二师兄,据说之前和导师有矛盾,刚换新导师,现在还在学Java基础,略微有点晚,大多数都是跳过实习,直接......
  • 2024年高考生的抉择:计算机相关专业是否依然值得选择?
    2024年,计算机相关专业还值得选择吗?随着2024年高考的钟声渐行渐远,数百万高三学生们正忙着擦拭自己那满是压力汗水的额头,并面对人生中的重要抉择:选择大学专业。这可比选择今天中午吃什么难多了!这个决定就像一场巨大的甜品派对,你得在满桌子的蛋糕、布丁和冰淇淋中选一个最不容易......
  • 计算机网络9——无线网络和移动网络3 蜂窝移动通信网
    文章目录一、蜂窝无线通信技术的发展简介1、蜂窝移动通信系统问世2、2G蜂窝移动通信系统3、数据通信被引入移动通信系统4、3G蜂窝移动通信系统4、4G蜂窝移动通信系统一、蜂窝无线通信技术的发展简介1、蜂窝移动通信系统问世移动通信的种类很多,如蜂窝移动通信、......