我被这个浏览了 746002 次的问题惊住了!(下)

简介: 我被这个浏览了 746002 次的问题惊住了!(下)

History has changed again...

历史再次发生了变化。

在个时区数据库里面,2014f 版本中,变化的时间已经移到了1900-12-31,现在只是一个 343 秒的变化。

343 秒?

不就是我们前面的 5 分 43 秒吗?

image.png

好了,现在时差能对上了,343 秒,但是时间还是没对上啊。

我们的测试时间 1900-01-01 08:00:00,他这里写的时间是 1900-12-31。

差了整整一年呢?

好,我们看他最后一次编辑的内容:

image.png

我个人理解他要表达的意思是这样的。

Java 为了在时区上统一标准,所以来了个一刀切的政策。

统一的标准就是让 UTC 时区下 1900 年之前的任何瞬间都是标准时间。

至于产生的时差嘛...

就在最开始的时候补上去吧。

所以,1900-01-01 00:00:00 加上 8 小时时差,是 1900-01-01 08:00:00,在这个基础上预先加上 27 年后来自 1927-12-31 那个午夜由于时间回拨带来的 343 秒。

1900-01-01 08:05:43,我个人认为就是这样来的。

而前面 stackoverflow 里面对应的那个程序,我们现在执行是输出 1,但是在 10 年前,输出结果确实是 353 。

就像我把程序改成这样:

image.png

最终的输出结果不是 1,而是 -342。

时间,发生了“倒流”。

好了,又是一个没啥卵用的知识点。

最后,再补充两个冷知识。

第一个是我在 jdk bug 列表里面追溯了一下,能找到最早提出相关问题的时间是 2005 年:

https://bugs.openjdk.java.net/browse/JDK-6281408


image.png

image.png

这个问题不会被修复,以避免任何兼容性问题。

意思就是:问题我知道了,但是这玩意不太好弄,bug 先变成 feature 吧,就先这样吧。

别问,问就是有历史原因在里面。

第二个冷知识是,前面提到的,时区在 1927 年发生了变化。

你知道为什么吗?

我在某网站上找到了这样的描述:

https://zh.wikipedia.org/wiki/%E4%B8%AD%E5%9C%8B%E6%99%82%E5%8D%80


image.png

1928 年,就是民国 17 年。

那一年,南昌起义爆发,中国人民解放军成立。

那一年,毛主线在井冈山建立农村革命根据地。

那一年,星星之火,已成燎原之势。

image.png

最后说一句

好了,看到了这里了,转发、在看、点赞随便安排一个吧,要是你都安排上我也不介意。写文章很累的,需要一点正反馈。

给各位读者朋友们磕一个了:

微信图片_20220428222651.png

目录
相关文章
|
前端开发 IDE 开发工具
「趣学前端」日常浏览的页面为什么可以五颜六色
用技术实现梦想,用梦想打开创意之门。为了给不懂技术的朋友讲解日常开发中怎么实现网页的效果,我准备出一个系列。
149 1
|
Java 数据库
我被这个浏览了 746001 次的问题惊住了!(中)
我被这个浏览了 746001 次的问题惊住了!(中)
127 0
我被这个浏览了 746001 次的问题惊住了!(中)
|
Java 数据库
我被这个浏览了 746000 次的问题惊住了!(上)
我被这个浏览了 746000 次的问题惊住了!(上)
118 0
我被这个浏览了 746000 次的问题惊住了!(上)
|
PHP
PHP判断是手机端浏览还是web端浏览
PHP判断是手机端浏览还是web端浏览
113 0
Confluence 6 移动浏览的面板 —— 你首先看到的
Confluence 6 移动浏览的面板 —— 你首先看到的
222 0
Confluence 6 移动浏览的面板 —— 你首先看到的
|
JavaScript 前端开发 关系型数据库
|
C++
直接用IE浏览网页 VS 在“我的电脑”里访问网页——保存cookie的问题。
     直接用IE浏览网页、在“我的电脑”里输入网址,这两种方法都可以访问网页,而且“我的电脑”里输入网址输入网址后(按回车),“我的电脑”就会变成IE的形式,表面上看这两种方式是没有什么却别的,但是,如果是一个OA,里面有window.open的形式打开的窗口,并且使用cookie的方式要验证用户是否登录,那么区别就显现出来了。
895 0