首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用系统时区和系统时钟的情况下在time4j上获得准确的UTC当前时间戳?

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

Stack Overflow用户
提问于 2018-08-19 12:51:27
回答 1查看 222关注 0票数 1

那里!

我必须得到准确的当前UTC时间,而不调用系统时钟或系统时区。我需要通过Time4j库获得精确的UTC时间。

问题是,在通过不同的方式获得UTC时间后,准确度与确切的UTC时间(特别是以秒为单位)不匹配。这对我来说很关键。

我需要得到精确的UTC时间戳,因为在我的机器上不匹配超过5秒和当前的UTC时间。我必须在他的tern更新DB中将这个时间戳传输到API和API中。我每秒钟执行一些动作,在实际情况下,由于时间不够准确,我无法做到这一点。

在这里,为了获得当前的UTC时间戳,我测试了一些示例:

代码语言:javascript
复制
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时间戳?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-20 11:37:53

您的代码示例最终都是基于System.currentTimeMillis()的。如果您使用这个简单的时钟观察到的精度很低,那么您可以选择两种方法:

  • 遵循JB的建议,定期将操作系统与NTP服务器同步。
  • 或者您可以使用包含可选时钟的包net.time4j.clock

示例:

代码语言:javascript
复制
  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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51917845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档