【发布时间】:2014-05-22 19:56:20
【问题描述】:
我试图理解,Java 中GregorianCalendar 对象的getTimeInMillis() 方法。
考虑下面的代码 sn-p
XMLGregorianCalendar cal = DatatypeFactory.newInstance().newXMLGregorianCalendar("2014-01-19T00:00:00.000-00:00");
XMLGregorianCalendar cal1 = DatatypeFactory.newInstance().newXMLGregorianCalendar("2014-01-19T00:00:00.000+04:30");
System.out.println(cal.toGregorianCalendar().getTimeInMillis());
System.out.println(cal1.toGregorianCalendar().getTimeInMillis());
输出如下
1390089600000
1390073400000
这就是我产生困惑的地方。如果您看到输入时间,2014-01-19T00:00:00.000-00:00 和 2014-01-19T00:00:00.000+04:30,它们指的是同一时刻。因此,getTimeInMillis() 应该返回的它们的 UTC 时间应该是相同的,但是您会看到存在差异。本例中的差异是以毫秒表示的 4.5 小时,即第二个时间字符串中的时区偏移量。
不知道我的理解哪里出了问题。
【问题讨论】:
-
输入时间怎么一样?我错过了什么?
-
您的“它们指的是同一个实例”的说法令人困惑,因为您有两个不同的实例:cal 和 cal1。
-
将其更改为表示我的意思,“同一时刻”。格林威治标准时间的午夜和比格林威治标准时间提前 4.30 小时的时区凌晨 4.30 是同一时刻,或者至少这是我的理解......
-
@chimanrao 您有相同的当地时间,而不是相同的瞬间(请参阅偏移前的输入部分)。
标签: java xml utc timezone-offset