【问题标题】:Convert Apple's Cocoa framework Epoch (reference_date) to Java Date将 Apple 的 Cocoa 框架 Epoch (reference_date) 转换为 Java Date
【发布时间】:2023-03-14 15:48:01
【问题描述】:

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

【问题讨论】:

    标签: java ios datetime date epoch


    【解决方案1】:

    我建议通过添加适当的秒数来将秒数调整为 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);
    }
    

    【讨论】:

    • 我们刚刚越过了可可日期大于473410800的日期阈值,所以这段代码的检查不好。如果您需要弄清楚您拥有哪种数字,我会调整我之前的答案以考虑您正在使用的日期范围。不过,转换本身仍然是正确的。
    • 感谢四年后回来纠正这个凯利!太棒了!
    猜你喜欢
    • 2019-08-24
    • 1970-01-01
    • 2020-01-19
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多