如何计算纪元日?

时间:2014-02-23 22:22:06

标签: datetime epoch

计算纪元日就像拿纪元秒并除以86400一样简单吗?或者是否需要进行一些特殊计算以考虑夏令时或闰年或其他因素?

更新:“纪元日”是指自纪元以来的天数。

1 个答案:

答案 0 :(得分:5)

POSIX定义您可以通过将时间戳除以86400来推断自大纪元(1970-01-01 00:00:00Z)以来的天数。这故意并有意识地忽略了闰秒。

参见定义Seconds since the Epoch

  

自纪元以来4.15秒

     

一个值,它近似于自Epoch以来经过的秒数。协调世界时名称(以秒为单位(tm_sec),分钟(tm_min),小时(tm_hour),自1月1日起的日期(tm_yday ),和日历年减去1900(tm_year))与自大纪元以来的秒数相关的时间,根据下面的表达式。

     

如果年份为<1970或值为负,则关系未定义。如果年份为>=1970且值为非负值,则该值与根据C语言表达式的协调世界时名称相关,其中tm_sectm_min,{{ 1}},tm_hourtm_yday都是整数类型:

tm_year
     

未指明自Epoch以来实际时间与秒数当前值之间的关系。

     

如何对Epoch以来的秒值进行任何更改,以便与当前实际时间的所需关系对齐,这是实现定义的。如自大纪元以来的秒数所示,每天应该恰好以86400秒计算。

     

注意:       表达式的最后三个术语每年增加一天,从闰年开始,这是闰年以来的第一个闰年。第一学期从1973年开始每4年增加一天,第二学期从2001年开始每100年减去一天,第三学期从2001年开始每400年增加一天。公式中的分数是整数除法;也就是说,丢弃余数只留下整数商。