打印 Java 纪元的毫秒数返回 18000000



在乔达中,如果我打印

DateTime(GregorianChronology.getInstance())
    .withYear(1970)
    .withMonthOfYear(1)
    .withDayOfMonth(1)
    .withHourOfDay(0)
    .withMinuteOfHour(0)
    .withSecondOfMinute(0)
    .withMillisOfSecond(0).getMillis();

我看到18000000(这也恰好是MILLIS_PER_DAY的 1/4,FWIW)。

我不明白的是,如果毫秒表示与定义为 Jan-1970-01-01 的纪元的偏移量,那么毫秒不应该是 0 吗?

纪元是 Jan-1970-01-01 GMT 。您拥有的实例显然具有不同的DateTimeZone。事实上,它看起来像你在GMT+5。(18000000 米利斯 = 5 小时)

我相信

这个问题与Java日期将时区作为计算的一部分的方式有关。

对我来说,这意味着我比 epoc 提前 +10 小时。

尝试创建设置为 0 GMT 的日期/时间值。

"纪元"是一个特定的普遍的时刻,是宇宙时间中的一个点(比如说,阿波罗十一号登陆月球的那一刻)。这个参考点在不同的国家可以用不同的方式表示(火星人也可以用他自己的日历来表示它)。例如,对于英格兰人(GMT)来说,这是他们的时钟指针标记为"00:00:00"和他们的(公历)日历标记为"1/1/1970"的时刻;但这只是一个例子。

该行

DateTime(GregorianChronology.getInstance()).withYear(1970).withMonthOfYear(1)
    .withDayOfMonth(1).withHourOfDay(0).withMinuteOfHour(0)
    .withSecondOfMinute(0).withMillisOfSecond(0)

为您提供您所在国家/地区的时钟和日历标记为"00:00:00 1970-01-01"的时刻。一般来说,这是一个不同的时刻。

相关内容

  • 没有找到相关文章

最新更新