3

在 Joda,如果我打印

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

我明白18000000了(这也恰好是 FWIW 的 1/4 MILLIS_PER_DAY)。

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

4

3 回答 3

2

时代是 Jan-1970-01-01 GMT。您拥有的实例显然具有不同的DateTimeZone. 事实上,看起来你在 GMT+5。(18000000 毫秒 = 5 小时)

于 2013-01-25T07:53:12.290 回答
1

“时代”是一个特定且普遍 的瞬间,是宇宙时间中的一个点(例如,阿波罗 XI 号登陆月球的那一刻)。这个参考点在不同的国家可以用不同的方式表示(火星人也可以用他自己的日历来表示)。例如,对于英格兰 (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”的时刻。一般来说,那是一个不同的瞬间。

于 2013-01-27T13:52:56.850 回答
1

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

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

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

于 2013-01-25T07:54:34.120 回答