计算时代以来多少小时?

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

我想在我的应用程序中知道,从这个时代开始已经过去了多少小时。 更具体地说,我想知道“从历元开始有多少次GMT时钟以00结尾”

通常我会这样做:

number_of_seconds_since_epoch / 3600

但我不确定一小时是不是3600秒。 我一直听到地球一直在减速和加速,以及闰年如何做奇怪的事情等等。

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


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

格林威治标准时间没有夏令时的变化,所以你可以计算出时代以来的小时数

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

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

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


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

已经插入闰秒以使日期适应地球自转。 从时代开始就算是OS API返回的时间。

链接地址: http://www.djcxy.com/p/36669.html

上一篇: Calculate how many hours since the epoch?

下一篇: Find the exact difference between two (Joda Time) DateTime objects in java