如何在Java 7中获得国际原子时

 心悦随鑫_196 发布于 2023-02-08 14:22

我正在研究Java7项目,我们需要一个国际原子时间的时间戳.我发现了一些与此相关的问题,指向JSR-310和ThreeTen Project(正在实现JSR-310):

如何在Java中获得GPS时间和TAI时间?

http://www.coderanch.com/t/549178/java/java/TAI-Atomic-Time-International

但是,我正在努力研究用于Java 7的确切内容以及从何处获取它.似乎有ThreeTen的旧SourceForge和GitHub页面,以及OpenJDK页面.

我找到了Java 7反向端口,但是从Maven下载后它不包含TAIInstant类,这是我真正需要的(TIAInstant类列在ThreeTen SourceForge JavaDoc上,位于javax.time.TAIInstant下).

为了完整起见,这是我的pom.xml的摘录:


  org.threeten
  threetenbp
  0.8.1

我应该使用其他东西,我应该从哪里获取它?

注意:抱歉,我无法提供指向我所指的所有页面的链接,StackOverflow不会让每个帖子都有> 2个链接而没有更高的代表.

[编辑] 想要TAI的原因是我需要一个单调增加的时间戳,我相信TAI会满足(即使在正和负闰秒期间,因为它不关心闰秒计算所有秒数,包括飞跃秒).

从各种来源阅读了关于POSIX/Unix的时间后,我仍然不清楚在闰秒的Unix时间内发生了什么.我知道Unix时间在引用UTC时间方面是模棱两可的,但我不清楚在闰秒发生的瞬间Unix时间会发生什么?Unix时间'暂停'还是倒退例如?也许更重要的是,即使它不应该根据Unix时间规范,Unix实现是否真的遵守关于闰秒的规范......?

最后,我是否正确地说System.currentTimeMillis()将获得相当于POSIX时间(虽然以毫秒而不是秒)?

注意,我需要一个可以在JVM和机器上移植的对象(排除System.nanoTime()或类似的东西).

[结论]

TAI
TAI是一个测量时间的系统,每秒计算一次并且"所有秒都相等" - 即.每秒包含相同的时间段,所有秒数(包括闰秒)都计入总数中.这意味着TAI中的秒数(从某个任意起始点开始计算,例如Unix Epoch)是一个单调递增的整数.

POSIX时间
POSIX时间是用于测量时间的标准(不是实现).它将每天定义为恰好有86400秒.因此,POSIX时间不计算闰秒(因为偶尔一分钟可能有61秒,导致天数> 86400秒,理论上一分钟可能有59秒,导致天数<86400秒).这意味着POSIX中的'秒'具有可变长度,并且在闰秒之前/期间/之后不久,POSIX时钟可以跳过秒或重复它们.具体来说,Meno Hochschild在其答案中引用的POSIX规范指出,"实际时间与自大纪元以来秒的当前值之间的关系尚未明确."

UTC
UTC是一个时间标准,它与地球绕太阳运行的方式有关,旨在维持太阳位置与一天中的时间(在一个阈值内)之间的关系.即在地球的UTC + 0区域,太阳总是在UTC时间中午处于最高点.闰秒(正面或负面)是必要的,因为地球自转的速度不固定,并且它不会以可预测的方式变化(意味着我们无法预测何时需要闰秒 - 或者它们是否为正闰秒或负闰秒)

代表时代
在我看来,TAI和POSIX都代表"秒数"(即计算机实际存储容易的东西),而UTC是时间的"人类解释"(即年/月/日)小时:分钟:秒.毫秒)通常不会由计算机内部存储.

翻译时间
鉴于上述情况,有许多问题从POSIX(没有任何闰秒计算)转换为TAI(计算闰秒):

    它需要保持闰秒的表/计数以将任何POSIX时间转换为TAI时间

    即使第1点被解决,上面的POSIX Spec也不保证闰秒期间会发生什么,所以在这种情况下我们无法准确地表示明确的时间

    如果许多系统必须通信,在它们之间传递时间戳,我们必须保证闰秒的表/计数保持一致

另一方面,很容易从POSIX转换为UTC'人类解释'.它不需要知道闰秒,因为它只假设每天都有相同的秒数(虽然这些'秒'中的一些实际上有不同的时间长度).实际上,您只需使用POSIX Spec中的公式的倒数来获得各种UTC时间分量(再次参见Meno Hochschild引用的POSIX规范).

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有