将Apple的Cocoa框架Epoch(reference_date)转换为Java Date

Jim*_*mmy 0 java datetime date epoch ios

一个iPhone客户端发送一个日期到Java服务器作为Apple的Cocoa框架Epoch(自2001年以来的ms)以及当你转换为java date(自1970年)以来它转换为1980年的2011年,将Cocoa日期添加30年转换?或者我可以用于此转换的其他方法吗?

Kel*_*lly 7

我建议通过添加适当的秒数来调整Unix纪元时间(自1970年以来)的秒数,而不是增加一年.我不是积极的,但是我的直觉告诉我,在某些情况下(在闰年和日历的小调整等方面)碰撞年份本身是错误的.

如果您需要在2001年1月1日之后添加秒数,那么您要查找的数字是+978307200.如果你需要millis,只需乘以1000即可.

作为一个例子,我有一些代码需要在epoch之后的几秒钟内检测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);
}
Run Code Online (Sandbox Code Playgroud)