如标题所示,我需要找到自2004年1月1日UTC 00:00:00(使用Java)以来的TAI秒数。我最近才了解TAI是什么,而我尝试解决上述问题使我有些困惑。
我尝试过的
我知道在Java中您可以使用System.currentTimeMillis()
获取自1970年1月1日UTC(Javadocs)起的毫秒数。
此外,从对原子时间的简短研究中,我了解到,当前的TAI比UTC提前了37(le)秒。
因此,我的思考过程是:
查找1970年至2004年(34年)之间的秒数
从当前UTC时间中减去得出2004年以来的数字
加37以获取TAI中的实际秒数
我不确定这里的数学(1天= 86400秒):
选项1:86400(秒)x 365.25(天(1 Julian Year))x 34(年)= 1,072,958,400
选项2:86400(秒)x 365(天(1 Common Year))x 34(年)= 1,072,224,000
在这一点上,我开始质疑,与UTC相比,TAI中增加的37 leap秒是否考虑了leap年,因此我应该使用选项2。不幸的是,我不确定我的思维过程是否正确,我认为这是正确的。 d最好在这里进行确认。
另外,我发现this cite声称1,072,915,200(秒)等于01/01/2004 @ 12:00 am(UTC)。哪一种使我失望,因为它不等于我的任何计算。
最佳答案
泰秒本质上是原子秒制秒,包括leap秒。我的库Time4J开箱即用地支持此功能。有关TAI支持的更多详细信息,另请参见类Moment
的javadoc:
Moment m2004 = PlainTimestamp.of(2004, 1, 1, 0, 0).atUTC();
Moment now = SystemClock.currentMoment(); // other clocks based on NTP are possible
long seconds = SI.SECONDS.between(m2004, now);
System.out.println(seconds); // 425222084L
System.out.println(now); // 2017-06-22T13:15:24,570000000Z
关于java - 用Java查找自2004年1月1日UTC 00:00:00以来的TAI秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42032775/