Java 计算一下从新纪元开始有多少小时?
这是一个简单的问题,但我担心答案会有多复杂 我想知道在我的申请表中,从新纪元到现在已经过去了多少个小时。更具体地说,我想知道“自大纪元以来,格林尼治标准时间时钟以:00结束了多少次” 通常我会做:Java 计算一下从新纪元开始有多少小时?,java,c,date,unix-timestamp,epoch,Java,C,Date,Unix Timestamp,Epoch,这是一个简单的问题,但我担心答案会有多复杂 我想知道在我的申请表中,从新纪元到现在已经过去了多少个小时。更具体地说,我想知道“自大纪元以来,格林尼治标准时间时钟以:00结束了多少次” 通常我会做: number_of_seconds_since_epoch / 3600 但我不确定一小时是否等于3600秒。我一直听说地球是如何减速和加速的,以及地球是如何做奇怪的事情的,等等 有人能用任何语言告诉我正确的方法吗?谢谢 这里要小心。取决于你如何获得自纪元以来的秒数,你可能不必关心闰秒。如果你调用一
number_of_seconds_since_epoch / 3600
但我不确定一小时是否等于3600秒。我一直听说地球是如何减速和加速的,以及地球是如何做奇怪的事情的,等等
有人能用任何语言告诉我正确的方法吗?谢谢 这里要小心。取决于你如何获得自纪元以来的秒数,你可能不必关心闰秒。如果你调用一个操作系统API,你只会得到从1970-01-01T00:00:00开始的秒数
已插入闰秒,以使日期适应地球自转。操作系统API返回的是从新纪元开始计算秒数。Java系统和许多计算机系统一样,假设每天24小时(有些系统有夏时制变化)闰秒被视为正常的时间漂移校正,并通过操作系统和协议(如NTP或PTP)进行处理 GMT没有夏令时更改,因此您可以使用
int hours = (int) (System.currentTimeMillis() / 3600000);
关于Date API中的闰秒有一个讨论,要点之一是:
大多数计算机时钟不够精确,无法反映闰秒的区别 时不时有一个闰秒,那么你就有一个小时加上3601秒。UNIX时间不关心地球的自转。在UNIX下,1小时正好是3600秒。@DanielFischer这正是我担心的事情,哈哈。这些被称为闰秒。从新纪元到现在,已经有25闰秒了。