在程序里面,时间真的发生了345秒的倒流。(下)

简介: 在程序里面,时间真的发生了345秒的倒流。(下)

到底是怎么回事呢?

我们回到 stackoverflow 接着往下看:

image.png

这是他第一次修改回答,因为 History changes...

历史发了变化了...

他这里说,如果用 TZDB 的 2013a 版本的数据,原来的问题将不再表现出完全相同的行为。

在 2013a 中,结果将是 358 秒,过渡时间为 23:54:03,而不是 23:54:08。

他提到了一个 TZDB,这是个啥东西呢?

我也不知道,但是我搜索了一下。

image.png


他应该说的是这个的东西。

https://www.iana.org/time-zones

看名字你也知道了,它是一个时区数据库,里面应该是维护的时区相关的数据。

也就是说,在这个时区数据库里面,用 2013a 版本的数据,前面的代码就是另外一种输出了。

也就是说数据确实发生了变化。

而关键的回答在于下一次编辑:


image.png

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 吧,就先这样吧。

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



最后说一句


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

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

微信图片_20220428224551.png

目录
相关文章
|
10月前
|
关系型数据库 MySQL 数据库
什么是事务以及事务的四大特性?
事务是数据库操作的基本单元,具有ACID四大特性:原子性、一致性、隔离性、持久性。它确保数据的正确性与完整性。并发事务可能引发脏读、不可重复读、幻读等问题,数据库通过不同隔离级别(如读未提交、读已提交、可重复读、串行化)加以解决。MySQL默认使用可重复读级别,兼顾性能与数据一致性需求。
632 3
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
数据挖掘 Shell 测试技术
怎么用Python解析HTML轻松搞定网页数据
**Python解析HTML摘要** 本文介绍了使用Python处理HTML的常见需求,如数据提取、网络爬虫和分析,并讨论了三种解析方法。正则表达式适用于简单匹配,但对复杂HTML不理想;BeautifulSoup提供简单API,适合多数情况;lxml结合XPath,适合处理大型复杂文档。示例展示了如何用这些方法提取链接。
888 2
|
分布式计算 资源调度 大数据
【决战大数据之巅】:Spark Standalone VS YARN —— 揭秘两大部署模式的恩怨情仇与终极对决!
【8月更文挑战第7天】随着大数据需求的增长,Apache Spark 成为关键框架。本文对比了常见的 Spark Standalone 与 YARN 部署模式。Standalone 作为自带的轻量级集群管理服务,易于设置,适用于小规模或独立部署;而 YARN 作为 Hadoop 的资源管理系统,支持资源的统一管理和调度,更适合大规模生产环境及多框架集成。我们将通过示例代码展示如何在这两种模式下运行 Spark 应用程序。
907 3
|
监控 虚拟化
操作系统(4)---虚拟机
操作系统(4)---虚拟机
502 1
|
消息中间件 存储 缓存
高性能、高可靠性!Kafka的技术优势与应用场景全解析
**Kafka** 是一款高吞吐、高性能的消息系统,擅长日志收集、消息传递和用户活动跟踪。其优点包括:零拷贝技术提高传输效率,顺序读写优化磁盘性能,持久化保障数据安全,分布式架构支持扩展,以及客户端状态维护确保可靠性。在实际应用中,Kafka常用于日志聚合、解耦生产者与消费者,以及实时用户行为分析。
714 3
|
人工智能 自然语言处理 数据挖掘
田渊栋团队新作祭出Agent-as-a-Judge!AI智能体自我审判,成本暴跌97%
田渊栋团队提出Agent-as-a-Judge框架,利用智能体自身评估其他智能体的性能,不仅关注最终结果,还能提供中间反馈,更全面准确地反映智能体的真实能力。该框架在DevAI基准测试中表现出色,成本效益显著,为智能体的自我改进提供了有力支持。
517 7
(7)Qt中的自定义槽(函数)
这篇文章介绍了在Qt中如何定义和使用自定义槽函数,包括类成员函数、静态类成员函数、全局函数和lambda表达式作为槽函数的示例,以及使用lambda表达式时的注意事项。
732 2
(7)Qt中的自定义槽(函数)
|
存储 分布式计算 算法
大数据中一致性检查
【10月更文挑战第20天】
1304 2

热门文章

最新文章