gpt4 book ai didi

java - System.currentTimeMillis() 与 Timestamp.valueOf(LocalDateTime.now(UTC)).getTime()

转载 作者:行者123 更新时间:2023-12-02 01:05:06 25 4
gpt4 key购买 nike

Arn System.currentTimeMillis() 与 Timestamp.valueOf(LocalDateTime.now(UTC)).getTime() 是否都应该给出相同的数字,尝试发现它没有。

这是为什么,难道两者不都应该给出相同的数字,即 1970 年以来的毫秒数吗?

最佳答案

如果您阅读文档Timestamp.valueOf​(LocalDateTime dateTime) 的 javadoc说:

The provided LocalDateTime is interpreted as the local date-time in the local time zone.

由于 LocalDateTime 位于 UTC 时区,而不是本地时区,因此结果是时区转换为 JVM 的默认时间区。如果您从 now() 调用中删除 ZoneOffset.UTC,或改用 ZoneId.systemDefault(),它将按您的预期工作.

或者,如果您确实有 UTC 格式的 LocalDateTime,并且想要转换为 Timestamp,则需要说明 LocalDateTime 位于世界标准时间:

LocalDateTime ldt = LocalDateTime.now(UTC); // cannot change time zone
long millis = Timestamp.from(ldt.atZone(UTC).toInstant()).getTime(); // so specify time zone

当然,这些值仍然不一定相等,因为两次调用之间可能已经过了几毫秒的时间。

关于java - System.currentTimeMillis() 与 Timestamp.valueOf(LocalDateTime.now(UTC)).getTime(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160572/

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