在乔达中,如果我打印
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"的时刻。一般来说,这是一个不同的时刻。