gpt4 book ai didi

java - 如何证明 2015 年 6 月 30 日在 Java 8(新日期时间 API)中有 86401 秒?

转载 作者:搜寻专家 更新时间:2023-11-01 01:50:30 24 4
gpt4 key购买 nike

我试图证明 2015 年 6 月 30 日有 86401 秒,使用 Java 代码如下:

Instant i1 = Instant.ofEpochSecond(longestDay.toEpochSecond(ZoneOffset.UTC));
Instant i2 = Instant.ofEpochSecond(oneDayAfter.toEpochSecond(ZoneOffset.UTC));
long d = i1.until(i2, ChronoUnit.SECONDS);
System.out.println(d);
// 86400

我再试一次:

LocalDateTime longestDay = LocalDateTime.of(2015, Month.JUNE, 30, 0, 0, 0);
LocalDateTime oneDayAfter = LocalDateTime.of(2015, Month.JULY, 1, 0, 0, 0, 0);
long p = ChronoUnit.SECONDS.between(longestDay, oneDayAfter);
System.out.println("p = " + String.valueOf(p));
// Result: p = 86400

还没有成功

我还是再试一次:

ZonedDateTime startZdt = ZonedDateTime.of( 2015, 06, 30, 23, 59, 59, 00, ZoneOffset.UTC );
ZonedDateTime stopZdt = ZonedDateTime.of( 2015, 07, 01, 00, 00, 00, 00, ZoneOffset.UTC );
long elapsed = startZdt.until( stopZdt,ChronoUnit.SECONDS);
System.out.println("elapsed: " + elapsed);
// Result: elapsed: 1

我无法通过 Java 代码证明 2015 年 6 月 30 日有 86401 秒。帮我做到这一点!

最佳答案

简答:

没有。正如您已经演示的那样,没有机会用 java.time (JSR-310) 来证明它。

解释:

  • 为了启用这样的功能,JDK 中必须至少有一个闰秒表。但是:Oracle 已决定 remove these data from JDK .
  • 我怀疑您的想法来自阅读 Instant 的规范,该规范讨论的是时间尺度 UTC-SLS(最初是 Markus Kuhn 的 expired proposal)。 UTC-SLS 通过使用橡皮秒概念保持每天有 86400 秒的假设。如果您认真对待 UTC-SLS,那么您将无法观察到 86401 秒。注意:UTC-SLS != UTC
  • 但是:由于缺少闰秒数据,UTC-SLS 无法在 Java-8 中实现,只能指定。这实际上意味着,JSR-310 团队希望人们将秒解释为 UTC-SLS 刻度,尽管大多数人在一般情况下想到秒时肯定不是这种刻度。由于缺少数据,UTC 和 UTC-SLS 之间的这种细微差别幸运的是在标准 Java-8 中没有实际意义。在实践中,我们可以有效地忽略规范,只需将 Instant 处理为与完全忽略闰秒的 POSIX 相同的比例。此外,使用此 View ,您只会获得 86400 秒。

如果您仍然想要一个解决方案并且不忽略闰秒,那么在 2015 年 6 月 30 日观察 86401 SI 秒的唯一方法是使用像我这样的外部库 (Time4J):

PlainDate ls = PlainDate.of(2015, 6, 30);
Moment start = ls.atStartOfDay().atUTC();
Moment end = ls.plus(1, CalendarUnit.DAYS).atStartOfDay().atUTC();
System.out.println(SI.SECONDS.between(start, end)); // 86401

关于java - 如何证明 2015 年 6 月 30 日在 Java 8(新日期时间 API)中有 86401 秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com