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

use*_*592 12 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());
Run Code Online (Sandbox Code Playgroud)

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

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

Jon*_*eet 23

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

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

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

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

表示日历内时刻的两者Calendar.getTime()Calendar.getTimeInMillis()返回值,它独立于时区和日历系统.


zsx*_*ing 6

millisecDate对象的Java的仅仅是因为毫秒GMT+0 1970/01/01 00:00:00.它独立于时区.时区是将Date格式化为可读字符串的属性.