00:00
好,这里呢,再给大家插播一个知识,就是我们的这个啊,时间的问题。呃,我们刚才看到这个web UI上呢,其实在这个做这个查询的时候呢。我们看一下。呃,有这种这个呃时间问题,你比如现在呢是呃两点钟,那么现在呢,又把它改成UTC,又改成18.utc什么意思,然后一看这个原始数据呢,哎,这个时间呢,又是呃。昨天的下午六点钟,呃,那么这个东西的这包括这个T啊,后面这个Z什么意思啊,如果这些东西你不明白呢,那就好好听一下这一节。好,那么我们呢?现在回到文档上来,我们从最早的统一时间标准开始讲起,也就是GMT格林威治时间。那么这个呢,可以从这个呃,很久之前开始讲起啊,17世纪。呃,那么这个是什么问题呢?就是当时呢,我们在整个地球上。啊,比如说这是一个地球,完了之后这是亚洲。
01:03
啊,这是欧洲啊,这是非洲。哎,那么这边是澳洲,然后北美南美。啊,那么当时呢,我们有了钟表。呃,但是呢,这个钟表怎么对时间呢,通常来说,呃是我这里有个表,然后呢,我通通过观测,我今天这个这个太阳在我正中的时候呢,啊,我们12点是多少,那么当这个太阳等到走到我这里的正中的时候呢,啊,我把这个我会这个时针呢调到12点上。啊,那么如果你是在欧洲呢啊,那么你肯定是要等到这个啊,要不就是午夜,要不就是中午啊,等到这个太阳到你这的时候呢,你把它调成12点,那么可以想一下啊,就是当这个,当这个当这个,比如说这是英国,英国的12点的时候。啊,等到英国12点的时候,我这个表是12点吗?我这个表肯定不是12点了,哎,我这个表可能已经是,哎今天的下午多少点了,呃,那么这个时候呢,我们的这个时间呢,这个对于我们整个全球来说呢,啊,这个表的这个标准,时间的标准就不一样,那么如果呢是在航海上。
02:12
啊,当我要从这个北美出发和欧洲啊去通讯,哎,我说我们应该在这个,呃,下午的这个四点钟到啊,那好家伙,那你说的是你这里的这个啊,美国的这个下午四点钟呢,还是这个英国的下午四点钟呢?啊所以说呢,这个里边就急需这个啊去做一个统一的时间标准。啊,于是呢,在这个1884年的时候呢,这个呃,美国他就召开了一个国际军动会议,那么这个会议呢,他干了好几件事,其中一件事呢,就是把这个格林威治的时间,也就是这个英国的一个天文台,哎把这个时间呢,设为了国际标准时间啊同时呢,这个会议也把全球分成了24个时区,那么零度经线所在的这个位置呢,就是零时区,而且这个零度经线,哎,它就是要经过这个,呃,我们我们这个格林威治天文台的。
03:04
这个正上方。那么现在呢,有时候你去买这个机械表啊,他说什么GMT支持什么显示两地时间啊,其实意思就是它可以显示这个啊,格林位置的标准时间。呃,那么有了统一的这个时间标准呢,还不够,关键就是我们的时长,就我们时间的长度啊,在当时呢,还没有统一的标准,呃,于是当时呢,就是国际天文联合会呢,他们又在1928年搞出来一个叫UT的概念,叫做世界石,这个世界石呢,其实就是用来统计一天究竟多长啊,在当时呢,这个我们的规定呢,就是一天呢有24小时。然后一小时呢,有60分钟,然后每一分钟呢又有60秒,哎,那么一旦这个24小时的长度可以确定了,哎,那么我们把24,然后把这个时间呢,哎除以24,再除以60,就能得到一分钟的长度,然后再除以60呢,就能得到一秒钟的长度,那么时间呢,是这样确定下来的,呃,但是有个问题就是呃,当时的这个呃时间长度呢,它24小时的长度呢,其实是根据天文观测来定的,也就是一天这个太阳升,太阳落,哎对吧,就太阳这一周期,那么这就是一天。
04:19
就24小时。呃,其实呢,在地球的不同位置上呢,去观测这个地球自转的一周呢,啊,多少有些误差,那么当时呢,就规定啊,还是以这个格林威治时间作为标准啊,那么当这个格林威治的这个晚上结束子夜呢,来定为零点啊,然后他呢,就是格林威治这边观测到地球自转一天为24小时。啊,地球自转1000为24小时,而且呢,从这个1924年开始呢,这个格林威志呢,它就每隔一小时呢,会向全球广播一次,啊,当前的时间。但是呢,从1950年之后呢,有些天文学家就发现地球的自转它不是匀速的一个过程啊,它有时候快有时候慢啊,但是1950年之前呢,啊,大家都以为这个地球自转是匀速的啊,那么就导致这个我们的这个呃,时间的尺度,也就是啊,比如说这个秒的长度,随着这个不同的季节对吧,或者说是在不同的周期上,哎,它观测到的这个地球自转速度不同,那么你的这个秒的长度也不同。
05:25
呃,这样一来呢,就可能发现,诶,为什么这个秋天造的表是吧,好像哎出厂校准的时候比这个春天造的表好像要快一点啊,虽然说呢,这个呃差别呢并不是很大,但是日积月累呢也成问题,而且随着这个呃人类科技的发展,其实我们有时候呢,对这个时间的精度的要求是越来越高。啊,那么这个时候呢,用UT啊,天文观测的这种方式来确定这个啊时间长度呢,就不合适了,哎,这个时候呢,我们就提出了UTC。那么在这之前呢,给大家讲一下我们当前的这个人类的这个历史上的计时技术啊,人类历史上这个计时技术呢,大概就是三类啊,一个就是沙漏,通过这个某种匀速的运动呢,来表示时间,比如说沙漏啊,然后水中啊,或你这个烧香的这个啊,箱中啊,给你一炷香的时间啊,那么这种方式的缺陷的很大啊,这个对这个时间的测量呢,其实是一种非常粗略的方式。
06:21
还有另外一种呢,是天文观测啊,那么天文观测呢,其实呢,呃,它比较准啊,但是呢,我们有个问题就是呃,你没法工具化。啊,比如说我现在让一个同学啊,他出去看一下这个天上是几点,哎,同学出去看了之后呢,哎,他根本就看不出来是几点啊,因为这个他可能能知道啊,大概好像天有点亮了啊,可能再过一段时间啊,就可以看太阳了吧,啊他其实呢啊,很难没有没有这种工具啊,我们说有日晷,但是日晷呢,到了晚上也没有用了。所以说呢,这种方式呢,只适合那种有这个天文设备啊,哎,天文台这种东西,他可以天天看这个东西看得很精确啊,否则的话呢,我们日常生活中的通过天文观测来确定一个非常啊明确的时间尺度,包括这个时间的长度啊,它都是不合适的,那么当时呢,就在古代到了晚上呢,还有这个打更人,但是打更人呢,他其实也是根据这个杀漏和这个啊烧香燃香的这种方式来确定这个现在是什么时辰的啊,所以说呢,在这个啊钟表,在我们说我们说的这个摆钟,摆钟出现之前呢,其实呃,人们对这个时间的掌握都是比较粗略的。
07:36
那么这个钟表能够出现呢?实际上是亏了伽利略,那么伽利略呢?啊,是一个天文学家,但他呢,其实也是个全才啊,说白了就是他呢,当时通过这个教堂的吊灯呢,发现了摆的等时性啊,这是一个啊物理的现象,呃,那么这个摆的等时性什么意思呢?呃,假如说这是一个吊灯。啊,这是个灯。哎,他发现呢,就是这个灯呢,在小幅震动的时候呢,呃,来回这样晃荡一圈。
08:06
呃,它的时间呢,是相等的啊,来回逛荡一圈,这个时间是相等的,呃,所以说呢,通过这个特性呢,去这个啊,发明了摆钟,呃,当时呢,伽利略只是发现了这个现象,但他并不知道为什么等到这个,呃几十年后呢,才有人去给他做一个力学证明啊,说明这个事儿呢,确实是这样啊,那么看过纪录片呢,或者说是去过啊故宫这种博物馆的这个同学呢,可能知道,呃,当时呢,非常流行的一个进口的商品呢,就是表,哎,各种外国的使者来到中国,一般来说呢,都会给皇帝送各种表,那么这个时候呢,其实我们对这个人类对这个时间的掌握呢,已经非常的精确了啊,这个时候表和表之间呢,它可以做到这个误差呢啊,一天不超过一分钟。啊,所以说呢,这个时候呢,哎,这个时间已经非常精确了,那么从摆钟之后呢,其实我们的这个这个计时技术呢,就沿着这个固定频率的这个方式走了,那么不知道大家有没有记得这个以前上初中或者高中物理的时候,呃,我们去研究那个匀速直线运动啊,然后去当时用用过一个东西叫做打点计时器啊,我们可以看这个视频。
09:19
计绳的拉动之下,拖着纸带运动打点,计时器就在纸袋上打下一列小点。当小车运动到滑轮端时,要用手挡住小车,防止小车与,那么这个呢,其实就是一个啊,通过这个固定频率振动啊去计时的一个设备啊,那么到现在呢,我们平时现在你去淘宝上买这个电子表啊,呃,或者说是这个电子表有时候名义名字也叫石英表啊,那么为什么叫石英表呢?其实是它里面有一个石英振荡器啊,这个石英振荡器呢,其实是通过压电效应,也是让这个啊一个可以振动的东西,让它发出一个啊固定频率的震动。
10:01
啊,其实就是石英的精振啊,我们可以看到呢,就是这里呢,呃,网上有个视频,然后呢,他呢,这个是这个精振呢,是32768啊,一秒钟震动32768次啊,那么这是高速相机捕捉的这个惊震的效果,我们可以打开看一下。哎,可以看到呢,这个东西呢,其实很小,就在你的手表里面,但是它在震,哎,所以呢,现在这个人类呢,最先进的这个最精准的这个震动的方式呢,哎,观察这个固定频率震动的方式,其实叫原子钟啊,它是去观察这个原子共振的,呃,那么这样的话呢,既然有那么精准的这个固定频率的震动呢,啊,我们之前说的,诶,这个地球自转有时快有时慢,导致这个秒的长度不一定的问题,就可以通过这种方式来解决啊,于是呢,就有了我们说的国际原子石,国际原子石呢,它其实就是以这个,呃,我们的原子钟为标准,在全球呢,有400多个原子钟啊,他把这个原子钟呢,观测到的这个时间长度,然后取出来啊,做一个统一的规定啊,也就是以这个1958年1月1日零时的这个秒长为基准。
11:13
啊,什么意思呢?啊,我们画一个这个坐标图坐标轴。呃,假如说呢,这是一个啊,这标轴。然后呢,横轴是时间,纵轴呢是速度。呃,这个呢,是地球自转的速度,它现在它现在转的越来越慢,越来越慢啊,那我夸大了这个趋势,实际上转的这个速度呢,下降没有那么快啊,那么我们规定呢,是1958年1月1日零时,那么假如说他在这个轴上的这个点。也就是说啊,我不管你以后怎么转,你之前怎么转啊,在这个1958年1月1日零时呢,啊,你是这个速度,那我以后的这个啊,规定的这个一秒的长度,永远都是这个都是这个速度。啊,时间的速度都永远都是这样,哎,这样呢,也就是说只有在这个1958年的1月1日零时这一瞬间啊,我们这个国际原子时的这个秒长和这个啊,我们之前说的UT世界式的秒长是一样的啊,等到你后面你这个地球呢,转的快了还是转的慢了啊,跟我这个国际原子时规定的秒长都没有任何关系。
12:22
好,那么在此基础之上呢,呃,就有了我们的这个UTC叫做国际,呃,叫做世界协调时啊,这个意思是说你之前的UT。啊,你之前的UT不是按照这个地球的自转来吗?哎,那我UTC就在这个国际原子式的基础之上。从这个1958年1月1日零时开始,哎,它每隔24小时,哎,每隔我这个原子钟的二十四二十四小时,哎是一天,哎我不跟着你那个格林威置的天文台来了,那么因为这个UTC的这个,呃时间尺度恒定啊,这个秒长呢始终是固定的,哎所以说呢,呃,后来这个UTC呢,就成了这个国际的时间标准,呃所以我们这个UTC呢,它其实跟UT呢差不多啊,误差不是很大,呃因为UT呢,它基本上是格林位置时间。
13:14
而我们的UTC呢?它实际上是呃,UT,你可以认为它约等于格林威至GMT。然后呢,因为UTC呢,又跟UT差不多,这个地球自转呢,虽然说不匀速啊,但是它这个地球自转这个啊,变长变快一秒呢,它通常也需要很长时间的这个啊,好多好多年的一个积累,呃,所以说呢,呃,它UUTC呢又基本等于UT。呃,所以说当我们说到这个啊UTC的时候,你可以认为它约等于GMT啊,就是基本上就是UTC等于这个啊隔离位置时间,所以说一一说这个UTC呢,它其实相当于哎GMT呢,它是什么呢?隔离位置时间,它刚好又是零时区。
14:02
零时区,呃,所以说呢,一说UTC,你其实可以把它认为是零时区的时间,再加上这个UTC呢,它本来是吧,它本来就是我们的这个现行的时间标准,呃,那么我们去这个web u2看一下。啊,我还是查询一下这个数据。呃,所以说呢,你可以看到啊,我这个local呢,实际上就是我现在东八区。然后我一选这个UTC呢,它时间就会向前提前八小时啊,可以看到这个是现在是UTC,这里显示的是20020220919,然后05点啊凌晨五点,然后我现在选。哎,可以看到五加八是不是就是这个13呀。对吧,啊,所以说呢,现在这个就是显示的下午一点我们可以看到。啊,那么这就是UTC的这个这个时区所在,呃,可以看到呢,以这个原始数据里面,我们这个VIRO,你可以看到这里面的时间呢,其实就是用这个UTC的这个方式呢去表示的,但其实这个时间戳格式呢,它还不是UTC啊,后面我会给大家讲它是什么。
15:16
呃,可以看到啊,后面这个在这个,呃,日期和时间表达里面T。是日期和时间的分隔符啊,T是日期和时间的分隔符,左边是日期,右边是时间,那么最后这个Z呢,意思就是零时区啊意思意思就是零时区,呃,所以说呢,现在GMT呢啊是过去的这个时间是过去的国际标准,那么UTC呢啊,就是我们现在的国际标准。呃,那么这个现在呢,你在说GMT的话,通常来说呢,它是指代时区啊,也就是说它是指这个格林位置的时间,也就是零时区的这个时间。呃,其实还有一套写法,就是说你用这个时区的简写啊,来表示你的这个当前所在的这个时区,呃,那么比如说,但是呢,有个问题,比如说CCT这个简写呢,它既能表示美国中部时间,又能表示澳大利亚中部时间。
16:15
还有中国标准时间啊,那么我按我们按照这个之前有一些这个时区的写法呢,如果写C202208031.56分,那你知道这个是哪个时区吗?啊,其实你是啊,看不出来是哪个时区的。说白了就是这种写法有歧义啊,如果我说我给你发一个消息,说CCT的这个,呃,8月3号的下午六点钟过来啊,你那也知道我说的是哪一个,这个地方的这个,哎,时间标准吗?啊,所以说呢,这个时候呢,我们需要对日期时间啊这种表达方式做一个统一的规定,呃,于是呢,又有了我们后面说的。呃,首先是时区的,这个时区和偏移量的表达方式啊,另外就是后面的我们说的这个ISO8681的这个国际标准的啊,这个日期时间写法,首先呢,我们看这个这个时区和这个它是怎么去表示的。
17:14
那么现在的这个时区呢,实际上我们不是用CCT这种方式去表示,大多数时候呢,我们是用UTC加偏量的方式去表示。啊,比如说北京的时区呢,就是UTC再加上八小时啊,也就是东八区啊,所以说呢,我们的时间实际上是比UTC要快八小时了,呃,但是呢,我们知道这个世界上的时区呢,分为东西12区,呃,但是呢,你我们看一下这个日期设置。在右键看一下调整日期和时间。啊,然后呢,这里面有一个地方是我们的时区,我们看一下。呃。虽然说呢,只有东西12区,但是可以看到啊啊这个UTC的这个偏移量并上限,并不是说12小时,它其实还可以UTC再加13加14的也有。
18:04
那么这实际上呢,就是这个太平洋的几个小岛啊,说白了一个地区呢,它使用UTC加多少啊,并不是呃完全基于它的这个地理位置决定的啊,很大一部分这个原因呢,是因为它这个本地的行政命令啊,说我们这个时间呢,相对这个国际标准时间啊,偏移多少小时啊,多少分,而且呢,这个偏移量呢,还不一定是呃小数的整数倍啊,它可以是12小时45分。呃,所以说呢,我们现在通常是用这种方式来表示十区啊UTC加八,那就是我们现在的东八区,我们的北京时间。那么用这种方式表达这个时去偏移量呢,就少了这个啊,用你这个什么CCT啊,这种写法去表示时区的这个歧义啊,这样用UTC加偏移量啊,就没有这种歧义问题。那这个偏音量说完之后呢,我们还有一个问题,就是日期时间的表示格式问题啊,我们知道有些地方呢,他写日期呢,习惯是月日年,也有的地方呢,是日月年,那假如说我现在写一个20512。
19:11
二二,然后呢,我再写一个120522,那么我我要问就是假如说我们现在这个表示,你是说我是5月12号二二年还是。啊,一二年的5月22号还是这个,呃,12月的五号的二二年呢,所以说这个表述呢,必须要进行一个国际的规定,否则的话,这个地方呢,也很有歧义。呃,所以呢,后面就出标准了,叫做ISO8601 iso8601呢,它其实就是一个呃,日期时间的表达的标准啊,我们现在的大多数编程语言呢,都支持这种表达方式,那么它呢,其实首先呢,你要使用功率时间啊,另外就是它这里面的小时呢,是按24小时记的啊,还有呢,就是它是基于UTC,然后我们这里面的时区表达的方式呢,其实就是UTC的这个表达方式啊,另外呢,它还可以表示时间间隔,然后上面这四种东西呢啊,组合起来也可以进行一个啊规范的写法。
20:18
呃,比如说我们刚才看到的这个2022杠零九杠03T啊,什么14:13:00Z,这个实际上就是说UTC时间Z0时区啊,UTC的时间9月3号的下午两点钟,那么换到我们东八区呢,你要把这个14再加上八。那么现在呢,在很多编程语言,不管你是Python啊,还是Java,还是javascript,还是什么语言,呃,基本上呢,现在它内置的标准库呢,都会带一个这个,呃,获取ISO标准的这个,呃,日期时间字符串的方法。比如说我们现在呢,就打开这个浏览器啊,我们F12打开这个开发者工具啊,在这里面呢,我们就可以去弄一个日期对象,比如说X等于new date。
21:08
然后回车啊,也可以看到啊,这个X它出来的这个日期的表达方式呢,实际上呢,就不是我们的这个ISO8601的标准,呃,这里面呢,你还可以看到,把这个放大,你可以看到有个GMT加0800,其实我们说MT是什么,是基本上可以换算为UTC,就是UTC和GGMT基本上是没什么差别的啊,那么这个呢,GMT在家,呃,而且现在呢,GMT基本上来说呢,就是指零时区,那么这呢,就是零时区再加上八小时啊,指的我们现在东八区的时间,哎,刚好呢,这个地方对应的就是我们现在的时间是下午的01:56刚才,呃,那么现在呢,我们看这个这个对象有什么东西,以X点有一个two is o string,那么这个呢,实际上就是获取我们这个ISO8601的这个啊,标准的日期时间表达的方式,一回车你可以看到啊,就是T作为。
22:08
呃,我们的日期和时间的分隔符,然后Z呢表示零时区,而这个时候呢,我们现在之前打印的是下午一点钟,那么对于零时区的话,要对这个一点钟再去减上八小时啊,那么这里面呢,就是我们的凌晨五点,现在是哎隔离位置的凌晨五点。但是呢,我们这个in Fla DB里面,呃,我们说的这个时间戳的格式呢,它在文档里面说自己不是这个O8601,他说自己是什么呢?是RFC3339,那么什么是RFC3339呢。哎,它其实只不过是另外一种日期时间,日期日期时间的表达的格式,那么RFC呢,实际上是呃可以理解为这个各种收录各种文章的一个呃核定本,然后这里面呢,他会给一些互联网上呃比较有影响力的文章呢,给收录进来,然后给他们编号,呃,那么这个FC里面呢,它其实收录了很多跟呃互联网标准相关的这个啊文章,那么RFC3339呢,实际上是一篇关于啊日期时间标准写法的文章,那么有兴趣的同学呢,可以在我们文档里面看这个我们抄的这个链接,就是英文写的一个一篇文章。
23:23
呃,相比这个ISO8601呢,ISC3339要简洁一些啊,我们之前呢,没有给大家讲这个ISO8601,只讲一种表达方式啊,实际上这个ISO8601呢,他玩的很花,它有各种的写法啊,这些东西呢,都都是表示了同一个时间,呃,你可以有兴趣的话可以关注这个github上的项目。这里面呢,实际上是有一个,哎,动态的这个,呃,FC3339和ISO8601的这个动态对比图,呃,那么这里呢,你可以看到这里有一部分的表达方式,实际上是RFC3339和ISO8601都认的,除去这个交集呢,我们可以看到啊,从这个红圈之外的东西,我们再看这个IS86,就是看这一部分。
24:12
看这一部分。有没有发现什么特点?它的特点就是你好像都不大认识。啊,它的这个可读性呢,并不是非常的友好,呃虽然说他表达的方式呢,可以很花,呃可以这个呃以各种方式去表达时间很灵活,但是呢,你会发现从这个红圈往外的,你好像呢,有时候都读不懂,读不懂是什么意思,比如说这个P3D是什么意思。呃,不太清楚PTRM什么意思,你不具备这个相关的这个专业知识呢,你根本就看不明白,所以说呢,RC3339呢,它其实比ISO8601更加注重这个呃表达式的可读性,那么另外呢,再给大家提一下这个呃关于日期啊,关于这个呃偏移量时区的表达问题。
25:06
把这一部分呢截出来,然后放大一下。呃,我们可以看到呢,零时区你既可以用这个一个Z来表示,你也可以用这个正零零冒号零零来表示啊,那么现在呢,我们对应的UTC时间呢,是呃006,呃06:22:34,那么我们到这个东八区呢,就是要在这个时间基础之上呢,呃,再加上八小时,那么可以看到呢,现在是呃下午的14:23,那么刚好六加八就是12嘛,是14嘛,对吧?呃,但是要注意啊,这个地方表达的啊,这个地方表达的你可以看到,呃,你不要把这个加号呢理解为加啊,它实际上是偏移量的意思,指的是我左我左边的这个日期预期时间,它是在这个呃零时区基础之上偏移了八小时之后的一个结果啊这两个这个正零八冒号零零,它是一个独立的部分啊,你不要把它理解为一个,哎,执行加法的动作。
26:06
那么最后呢,再给大家说一下,也一个比较小众的知识点,也就是我们的润淼啊之前呢,我们说过UTCUTC呢,它是以1958年1月1日零时呢,啊,它是以国际原子石为标准,那么国际原子石呢,又是1958年1月1日零时啊那一瞬间,呃,我们观测的一天的长度,再除以24小时,再除以60分钟啊,再除以60秒啊,当时得到那一秒的长度,呃,那么现在呢,我们发现这个人类的这个,呃,地球呢,它转的越来越慢,如果说这个趋势延续下去呢?啊,那么几万年之后可能就是啊北京的同学们可能就是凌晨三点起来上课。那么能够让我们每天早上这个八点半起来准时上课的这个时间系统是什么呢?是我们之前说的这个呃,世界时UT,因为UT呢,它是根据呃这个地球自转一周来确定24小时的长度的,呃所以说呢,为了避免让这个UTC呢,呃让我们这个凌晨三点起来上课太惨,呃那么这些人呢,就引入了一个机制叫做闰秒,呃所谓闰秒呢,就是当这个UTC啊,你可以看啊,这个如果说这个地球自转越来越慢,这个误差呢就会越来越大,这个闰秒呢,就是让这个UTC。
27:21
去校准,减少和UT之间误差的一种机制。呃,那么这个世界上呢,有一个,呃,国际组织啊,叫什么地球自转委员会,然后呢,由他们去决定什么时候加这个闰秒。呃,所谓闰秒的意思呢,呃,就是我们知道有时候呢,这个人类的这个一分钟呢,我们一分钟的定义,一分钟等于60秒啊,那么加入闰秒的机制呢,其实就是说我某我们某一分钟呢,诶,当我发现这个UTC和UT误差过大的时候,我给UTC里面的某一分钟,诶让它长一点变成61秒。我举个例子,比如说现在呢,是我打一个。
28:05
比如呢,现在是呃,一分58秒,呃,那么正常的话,是不是下一下一个下一秒就是一分59秒呢。然后后面呢,啊,就应该是一分。啊,就应该是两分零秒。哎,那么如果有闰秒的话呢,我们这个时候会多一秒,也就是一分60秒,这个时候其实对这个一分来说呢,就就上一分钟来说,它其实这一分钟里面呢,有61秒啊,经过了61秒,就像是我们这个图里画了一样,当这个误差变大的时候呢,给这一分钟加一秒。这样的话呢,就能控制这个UTC和UT之间的误差,相当于一个对准的操作,呃,但是呢,就是什么时候加入闰秒呢,这个事儿并不可以预测,它其实是有一个叫国际国际地球自转服务啊,他每隔一段时间呢啊,就可可能是每隔一两年,然后通过这个天文观测呢,哎,去计算这个UTC和UT之间的误差啊,他觉得这个误差呢,大到一定程度了,他会提前好几个月向全世界公布,呃,在某一个时间啊,某个月的月底要增加一秒。
29:16
那么对于我们的计算机来讲呢,啊,不管是你的个人主机还是我们的服务器,呃,现在呢,它都是通过这个NTP服务去做一个时间的同步,呃,那么国际地球自转服务决定增加入秒的时候呢?啊,这个NTP会好几个月之前就告诉你的这个个人主机或者服务器啊,在某个月的月底那一瞬间你要去增加一秒。呃,那么我们要注意这个,呃,我们所熟知的unix时间戳,我们要来看这个机制,它是如何来处理闰秒的,呃,可以提前给大家说呢,就是1997年6月30日的,呃,11:59:59呢,这个地方啊,曾经被这个国际地球自转服务呢规定要增加一秒。
30:01
那么这一时间的对应的时间戳呢,实际上是这个,呃867715199,现在呢,我们去命令行里面啊,在shell里面去用这个date命令看一下当时的啊,这个时间的日期时间。好啊,这里开了一个新的会话,然后呢,Date-D单引号艾呃,这个命令呢,可以把我们的时间戳重新整回到日期。好,呃,现在呢,这个打印的是我们这个,呃。北京的时间。我们现在呢,要看这个UTC-U就零时区的啊,可以看到呢,现在是UTC。UTC的这个6月30号啊,23:59:59,那么过去之后呢,我再给他增加一秒,你可以看到我这里是一个啊秒精度的这个时间戳。
31:00
我再增加一秒呢,这个地方应该进位变成200,那么我们想它应该是,呃,要增加一秒的话,应该是23点,哎,59分60秒,那么我们我们看到底是多少秒这个时间。啊,你会发现呢,他从59秒呢,直接跳到零零了啊,就好像我们的计算机呢,不知道有入秒这一回事啊,实际上呢,这要说到这个操作系统,对呃时间戳的一个处理,对日期时间的处理啊,在我们的系统里面。呃,一天的时间被写死了,就是86400秒。那么计算机呢,来处理这个闰秒的机制呢?啊,实际上是暂停时间戳的手段啊,举个例子啊,不用举个例子,就说这个事,比如说啊,我们现在呢,是23:59:59。啊,对应的时间戳呢,是867715199。
32:01
啊,那么现在呢,我们说呃,这个国际上就说了,你以后呢,这这个时间呢,你要增加一秒啊,你应该是23:5960秒。哎,那么这个时候呢,对应的时间出了什么呢。对应的时间戳还是。八六。7715199,也就是说我们的unix时间戳直接在这个时候暂停一秒啊,等到我们的时间来到了第二天的。来到第二天的。00:00:00的时候,这个时间戳呢,才继续往下走,变成867715200啊,那么这就是unix时间戳处理闰秒的方式啊,所以说呢,如果你写了一个程序,以时间戳为主键,而且呢,这张表呢,还每秒钟会增加一条,那么你在这个时候呢,就有可能会碰见这个啊主键不唯一的错误啊,报异常了,呃,所以说呢,这个东西它其实有时候会对我们的计算机程序呢有破坏性,如果你不知道这个点的话啊,就可能会踩到这个坑。
33:16
因此呢,现在也有一些,比如说谷歌这些公司里面的一些高级程序员呢,就号召废除闰秒的这个机制。好,那么这呢,就是一个比较冷门的知识点啊,大家呢,可以当做一个饭后的谈资啊去掌握。
我来说两句