Java:时区为什么不同的时区以毫秒为单位给出相同的值

我有以下代码,我的目标是以毫秒为单位返回GMT+0时间。 但为什么我总是得到我当地的时区millisec?

 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); Calendar cal2 = Calendar.getInstance(); System.out.println("Time zone id is:"+cal.getTimeZone().getID()+";time in millisec:"+cal.getTimeInMillis()); System.out.println("Time zone id is:"+cal2.getTimeZone().getID()+";time in millisec:"+cal2.getTimeInMillis()); 

输出是
时区ID为:GMT;时间以毫秒为单位: 1332740915154
时区ID为:Europe / Helsinki;时间以毫秒为单位: 1332740915154

为什么不同的时区以毫秒为单位给出SAME值?
我想如果它是GMT+0那么它应该是毫秒与本地时区的不同值。

为什么不同的时区以毫秒为单位给出SAME值?

因为这就是它的意图 。 从文档:

(返回)从纪元开始的UTC毫秒的当前时间。

换句话说,它是getTime返回的Date的值 – 它不依赖于时区。 如果您想要取决于时区的值,请使用Calendar.Get(Calendar.YEAR)等。

Calendar.getTime()Calendar.getTimeInMillis()返回表示日历中时刻的值,该时间独立于时区和日历系统。

Java中 Date对象的毫秒数是GMT+0 1970/01/01 00:00:00以来的毫秒数。 它独立于时区。 时区是将Date格式化为可读字符串的属性。

getTimeInMillis()方法从当前时间返回UTC毫秒的当前时间。 因此,即使两个日历对象具有不同的时区,您也会获得相同的毫秒数。