在不依赖操作系统时间的情况下获取UTC时间

时间:2016-11-30 23:12:10

标签: java

在java中是否可以在不依赖操作系统时间设置的情况下获得UTC时间?

例如在java 8时间api Instant.now()以UTC返回时间。如果我将操作系统中的系统时间更改为提前30分钟,则会给我UTC time + 30 minutes

是否有时钟不依赖于使用哪种操作系统设置,某种机器时钟?如果是这样,如何从java中使用它。

1 个答案:

答案 0 :(得分:2)

获得System.currentTimeMillis()时,这是GMT + 0的系统/机器时钟时间。您的机器上没有额外的更新时间。您可以向时间服务询问可用时间,但是它会有一些错误,并且存在显着的延迟,您需要依赖它的准确性。

唯一可用的其他时钟是System.nanoTime(),在大多数机器上是自机器复位后的纳秒数。它不能通过增加或减去30分钟来改变,但它与任何标准时间无关,也不能纠正每天数十毫秒的漂移。