在我的新工作场所中,它们表示很多日期为“自纪元以来的天数”(以下将其称为DSE)。我遇到了JavaScript的问题,即从epoch(UNIX时间戳)转换为DSE到秒。这是我执行转换的功能:
function daysToTimestamp(days) {
return Math.round(+days * 86400);
}
举例来说,当我通过13878(预计代表2008年1月1日)时,我会得到1199059200,而不是我期望的1199098800。为什么?
最佳答案
1199059200代表2007年12月31日在UTC。示例Python会话:
>>> import time
>>> time.gmtime(1199059200)
(2007, 12, 31, 0, 0, 0, 0, 365, 0)
请记住,所有
time_t
值均针对UTC。 :-)您必须相应地调整您的时区。编辑:由于您和我都在新西兰,所以这可能是您获得1199098800价值的方式:
>>> time.localtime(1199098800)
(2008, 1, 1, 0, 0, 0, 1, 1, 1)
之所以如此,是因为在新年(新西兰的夏季),这里的时区是+1300。做数学看看。 :-)
对于2008年1月1日在UTC,将86400添加到1199059200,得到1199145600。
>>> time.gmtime(1199145600)
(2008, 1, 1, 0, 0, 0, 1, 1, 0)