gpt4 book ai didi

java - 如何在不使用系统时区和系统时钟的情况下获得 time4j 的准确 UTC 当前时间戳?

转载 作者:行者123 更新时间:2023-11-30 06:02:51 25 4
gpt4 key购买 nike

那里!

我必须在不调用系统时钟或系统时区的情况下获取准确的当前 UTC 时间。我需要通过 Time4j 库获取精确的 UTC 时间。

问题是,通过不同方式获取 UTC 时间后,准确度与确切的 UTC 时间不匹配,尤其是秒数不匹配。这对我来说至关重要。

我需要获得准确的 UTC 时间戳,因为我的机器上和当前 UTC 时间不匹配超过 5 秒。我必须将此时间戳传输到 API 中,并在他的 tern 更新数据库中使用 API。我每秒执行一些操作,但在实际情况下,由于时间不够准确,我无法执行此操作。

这里是我测试过的一些获取当前 UTC 时间戳的示例:

Moment moment = Moment.UNIX_EPOCH;

First:
PlainTimestamp test1 = SystemClock.inZonalView("UTC").now();

Second:
Moment test2 = Moment.nowInSystemTime();

Third:
PlainTimestamp test3 = moment.toLocalTimestamp();

Forth:
PlainTimestamp test4 = Moment.nowInSystemTime().toZonalTimestamp("UTC");

我没有通过这些方法获得所需的准确性。

有什么方法可以通过 time4j 获取精确度高达秒的实际 UTC 时间戳吗?

最佳答案

您的代码示例最终全部基于System.currentTimeMillis()。如果您发现使用这个简单时钟的精度较低,那么您可以选择两种方法:

  • 遵循 JB Nizet 的建议定期将您的操作系统与 NTP 服务器同步

  • 或者您可以使用包 net.time4j.clock其中包含替代时钟。

示例:

  SntpConnector clock = new SntpConnector("ptbtime1.ptb.de"); // ntp-server-address
clock.connect(); // requires internet connectivity, performs the synchronization
Moment utc = clock.currentTime()); // can be called without actual internet access

关于java - 如何在不使用系统时区和系统时钟的情况下获得 time4j 的准确 UTC 当前时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51917845/

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