【发布时间】:2023-03-14 15:48:01
【问题描述】:
iPhone 客户端将日期作为 Apple 的 Cocoa 框架 Epoch(自 2001 年以来的 ms)发送到 Java 服务器,当您转换为 Java 日期(自 1970 年以来)时,它转换为 2011 年的 1980,增加了 30 年可可枣会转换吗?或者有没有其他方法可以用于这种转换?
【问题讨论】:
标签: java ios datetime date epoch
iPhone 客户端将日期作为 Apple 的 Cocoa 框架 Epoch(自 2001 年以来的 ms)发送到 Java 服务器,当您转换为 Java 日期(自 1970 年以来)时,它转换为 2011 年的 1980,增加了 30 年可可枣会转换吗?或者有没有其他方法可以用于这种转换?
【问题讨论】:
标签: java ios datetime date epoch
我建议通过添加适当的秒数来将秒数调整为 Unix 纪元时间(自 1970 年以来),而不是增加年份。我不是很肯定,但我的直觉告诉我,在某些情况下,改变年份本身是错误的(闰年和日历的小幅调整等)。
如果您需要将自 2001 年 1 月 1 日以来的秒数添加到秒数,您要查找的数字是 +978307200。如果需要毫秒,只需乘以 1000。
例如,我有一些代码需要检测 Apple 与 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);
}
【讨论】: