java - 如何根据 Macintosh 时间打印以毫秒为单位的日期

标签 java date datetime

我有一个整数,表示自凌晨 12:00 以来经过的毫秒数。 1904 年 1 月 1 日。我相信这也称为麦金塔时间。这是原始 Mac 操作系统使用的基准时间。

通常我会这样做:

int millis = 1284543608;
Date date = new Date(millis);
System.out.println(date);

但是,这使用 Unix 纪元,因此不会返回准确的日期。

如何使用从 Macintosh 时间获取的毫秒数打印日期?

最佳答案

    Calendar macEpoch = Calendar.getInstance();
    macEpoch.setTimeInMillis(0);
    macEpoch.set(1904,0, 1, 0, 0, 0);

    //On a mac
    Calendar macTimeForToday = Calendar.getInstance();

    System.out.println("ms since mac epoch: " + macTimeForToday.getTimeInMillis());
    System.out.println("ms since epoch: " + (macTimeForToday.getTimeInMillis() + macEpoch.getTimeInMillis()));

请注意,当您将 -2082880800000L 添加到 macTime.getTimeInMillis() 时,整个转换就会发生

关于java - 如何根据 Macintosh 时间打印以毫秒为单位的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113151/

相关文章:

c# - 将 DateTime 的 Date 部分序列化为 4​​ 个字节的最快方法?

sql - 疯狂的日期时间值在 SQLite 中存储为奇怪的 float

java - 从 Firebase 获取 Parcelable

java - Logback SyslogAppender 堆栈跟踪日志记录前缀

java 8 中的 Java 内存区域

date - Crystal 报表日期公式使其成为月底

Php mktime() 与日期()

sql - 你如何在 postgres 中选择日期范围?

Sharepoint xsl ddwrt FormatDateTime 问题

java - JAR list 应用程序库允许的代码库不匹配