1

这是一个简单的问题,但我对答案可能有多复杂感到紧张。

我想在我的申请中知道,自纪元以来已经过去了多少小时。更具体地说,我想知道“自纪元以来有多少次 GMT 时钟以 :00 结束”

通常我会这样做:

number_of_seconds_since_epoch / 3600

但我不确定一个小时是否正好是 3600 秒。我不断听到关于地球如何不断减速和加速,以及闰年如何做奇怪的事情等。

任何人都可以用任何语言告诉我正确的方法吗?谢谢!

4

3 回答 3

1

Java systems, like many computer systems assume that every day as 24 hours (and some have daylight saving changes) Leap seconds are treated like a normal time drift correction and is handled via the OS and protocols like NTP or PTP.

GMT doesn't have daylight saving changes so you can calculate the number of hours since epoch with

int hours = (int) (System.currentTimeMillis() / 3600000);
于 2013-05-11T22:21:02.757 回答
1

在 Date API 中有一个关于闰秒的讨论,要点之一:

大多数计算机时钟不够准确,无法反映闰秒的区别。

于 2013-05-12T02:03:52.400 回答
0

这里要小心。根据您如何获得自纪元以来的秒数,您可能不必关心闰秒。如果您调用操作系统 API,您将只获得自 1970-01-01T00:00:00 纪元以来的秒数。

已插入闰秒以使日期适应地球自转。从纪元开始计算秒数是 OS API 所返回的。

于 2013-05-11T21:30:09.953 回答