计算纪元日就像拿纪元秒并除以86400一样简单吗?或者是否需要进行一些特殊计算以考虑夏令时或闰年或其他因素?
更新:“纪元日”是指自纪元以来的天数。
答案 0 :(得分:5)
POSIX定义您可以通过将时间戳除以86400来推断自大纪元(1970-01-01 00:00:00Z)以来的天数。这故意并有意识地忽略了闰秒。
自纪元以来4.15秒
一个值,它近似于自Epoch以来经过的秒数。协调世界时名称(以秒为单位(
tm_sec
),分钟(tm_min
),小时(tm_hour
),自1月1日起的日期(tm_yday
),和日历年减去1900(tm_year
))与自大纪元以来的秒数相关的时间,根据下面的表达式。如果年份为
<1970
或值为负,则关系未定义。如果年份为>=1970
且值为非负值,则该值与根据C语言表达式的协调世界时名称相关,其中tm_sec
,tm_min
,{{ 1}},tm_hour
和tm_yday
都是整数类型:tm_year
未指明自Epoch以来实际时间与秒数当前值之间的关系。
如何对Epoch以来的秒值进行任何更改,以便与当前实际时间的所需关系对齐,这是实现定义的。如自大纪元以来的秒数所示,每天应该恰好以86400秒计算。
注意: 表达式的最后三个术语每年增加一天,从闰年开始,这是闰年以来的第一个闰年。第一学期从1973年开始每4年增加一天,第二学期从2001年开始每100年减去一天,第三学期从2001年开始每400年增加一天。公式中的分数是整数除法;也就是说,丢弃余数只留下整数商。