计算自纪元以来的小时数?

时间:2013-05-11 20:42:17

标签: java c date unix-timestamp epoch

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

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

通常我会这样做:

number_of_seconds_since_epoch / 3600

但我不确定一小时是否正好是3600秒。我一直听说地球如何减速和加速,以及如何做出奇怪的事情等等。

任何人都可以用任何语言向我展示正确的方法吗?谢谢!

3 个答案:

答案 0 :(得分:1)

像许多计算机系统一样,Java系统假设每天24小时(有些人有夏令时更改)闰秒被视为正常时间漂移校正,并通过操作系统和NTP或PTP等协议处理。

GMT没有夏令时更改,因此您可以计算自纪元以来的小时数

int hours = (int) (System.currentTimeMillis() / 3600000);

答案 1 :(得分:1)

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

大多数计算机时钟都不够精确,无法反映闰秒的差异。

答案 2 :(得分:0)

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

已插入闰秒以使日期适应地球自转。只计算自纪元以来的秒数就是OS API返回的时间。