0

iPhone 客户端将日期作为 Apple 的 Cocoa 框架 Epoch(自 2001 年以来的 ms)发送到 Java 服务器,当您转换为 java 日期(自 1970 年以来)时,它将转换为 2011 年的 1980,将 30 年添加到 Cocoa 日期将转换?或者有没有其他方法可以用于这种转换?

4

1 回答 1

6

我建议通过添加适当的秒数来将秒数调整为 Unix 纪元时间(自 1970 年以来),而不是增加年份。我不是很乐观,但我的直觉告诉我,在某些情况下,改变年份本身是错误的(闰年和日历的小幅调整等)。

如果您需要将 2001 年 1 月 1 日以来的秒数添加到秒数,您要查找的数字是 +978307200。如果您需要毫秒,只需乘以 1000。

例如,我有一些代码需要检测 Apple vs Unix 纪元以来的纪元日期,并在构造函数中将它们转换为自 Unix 纪元以来的毫秒数的 Java 日期:

// Earlier than 1985 in Unix, must be Apple
if(date < 473410800) {
    m.date = new Date((date + 978307200L) * 1000);
} else {
    m.date = new Date(date * 1000);
}
于 2012-07-26T16:12:38.193 回答