在Joda,如果我打印
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?
答案 0 :(得分:2)
这个时代是1970年1月1日至1月1日 GMT
。您拥有的实例显然有不同的DateTimeZone
。事实上它看起来像你在GMT + 5。 (18000000毫秒= 5小时)
答案 1 :(得分:1)
我认为这个问题与Java日期包含时区作为计算的一部分的方式有关。
对我来说,这意味着我比竞争对手提前了10个小时。
尝试创建设置为0 GMT的日期/时间值。
答案 2 :(得分:1)
“时代”是一个特定的,通用的瞬间,是宇宙时间中的一个点(比如说,阿波罗XI登陆月球的那一刻)。这个参考点可以在不同的国家以不同的方式表示(火星人也可以用自己的日历表示它)。例如,对于英格兰人(格林威治标准时间)来说,那时他们的时钟指针标记为“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”的时刻。总的来说,这是一个不同的瞬间。