gpt4 book ai didi

java - Java 8 和 Java 9 之间 ZoneDateTime 精度的差异

转载 作者:行者123 更新时间:2023-11-29 08:30:38 25 4
gpt4 key购买 nike

我执行以下代码,我得到了 Java 8 和 Java 9 之间不同的精度。

import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

public class TimeTest {

public static void main(String[] args) {
System.out.println(DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(ZonedDateTime.now()));
}
}

使用 Java 8 输出

$ java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
$ java TimeTest
2018-01-31T10:30:49.397Z

使用 Java 9

$ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
$ java TimeTest
2018-01-31T10:30:02.343193Z

是否有预期的输出或错误?

最佳答案

javadoc(至少是 java 8 的)指出:

One to nine digits for the nano-of-second. As many digits will be output as required.

所以两者都是正确的。

此外还有 ISO-8601 的规范(来自维基百科):

There is no limit on the number of decimal places for the decimal fraction.

[编辑]更具体地说,我投入到调试 Java 库代码中。

小数秒的内部表示是397000000,然后被分割,最终被送入BigDecimal.stripTrailingZeros()得到.397 .

Java 9 返回更多数字的原因是因为除了使用 Java 都使用的 System.currentTimeMillis() 之外,Java 9 还调用了 VM.getNanoTimeAdjustment() .

关于java - Java 8 和 Java 9 之间 ZoneDateTime 精度的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48540070/

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