java的时区问题

java的时区问题,java,Java,当我在windows计算机中运行以下代码时 Calendar cal = Calendar.getInstance(); TimeZone iz = TimeZone.getDefault(); System.out.println(iz.getOffset(cal.getTimeInMillis()) + "\t" + cal.getTime() + "\t" + cal.getTimeZone().getDisplayName() + "\t" + iz.getDSTSavings());

当我在windows计算机中运行以下代码时

Calendar cal = Calendar.getInstance();
TimeZone iz = TimeZone.getDefault();
System.out.println(iz.getOffset(cal.getTimeInMillis()) + "\t" + cal.getTime()
+ "\t" + cal.getTimeZone().getDisplayName() + "\t" + iz.getDSTSavings());
输出:

10800000    Mon Apr 21 11:55:11 FET 2014    Further-Eastern European Time   0
但当从我朋友的机器上执行相同的代码时,它会说:

10800000    Mon Apr 21 11:55:11 FET 2014    Eastern European Time   3600000

Time Zone : (UTC+02:00) E. Europe
对于其他时区,我得到了正确的结果,但对于这个时区,它给出了一些奇怪的问题

请让我知道可能的问题是什么?时区取决于哪些参数? 我在谷歌上搜索了这个问题,但我找不到解决方案或原因


基本上,我想根据偏移量将来自机器的任何时间转换为
GMT/UTC
,但在这种情况下,当夏令时正在进行时,场景失败。 提前谢谢

以下是更多信息: 我的机器的日历对象:
java.util.GregorianCalendar[time=1398072046600,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Europe/Minsk”,offset=10800000,dstSaves=0,useDaylight=false,transitions=69,lastRule=null],周的第一天=1,周的第一天=1,纪元=1,年=2014,月=3,年的周=17,月的周=4,月的日=21,年的日=111,周的日=2,月的周的日=3,上午下午=1,小时=0,日的小时=12,分钟=20,秒=46,毫秒=600,分区偏移=10800000,DST偏移=0]

好友计算机的日历对象:
java.util.GregorianCalendar[time=1398072634915,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Europe/Minsk”,offset=7200000,dstSavings=3600000,useDaylight=true,transitions=121,lastRule=java.util.SimpleTimeZone[id=Europe/Minsk,offset=7200000,dstSaves=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDayOfWeek=1,startDayOfWeek=1,startDayOfWeek=1,startTime=7200000,startTimeMode=1,endMode=2,endMonth=9,endDayOfWeek=1,endTime=7200000,endTimeMode=1]],周的第一天=1,周的第一天=1,纪元=1,年=2014,月=3,年的周=17,月的周=4,月的日=21,年的日=111,周的日=2,月的周的日=3,上午下午=1,小时=0,日的小时=12,分钟=30,秒=34,毫秒=915,分区偏移=7200000,DST偏移=3600000]

您的时区是UTC+3,您朋友的时区是UTC+2,但他们采用夏时制(3600000毫秒=1小时),表示其有效时间为UTC+3。因此,您的朋友与您的时间相同。这看起来非常正常。如果您的朋友不住在东欧时区,他应该调整计算机上的系统设置。

我们对系统时区进行了更改。我们也做了相同的更改。根据您提供的其他信息尽管如此,它们并不相同。您的系统不使用夏令时(useDaylight=false),his使用夏令时(useDaylight=true)是的,这很奇怪,因为我们都有相同的时区配置,但我们得到的结果不同,我不知道问题出在哪里,是windows还是java。或者可能是一些配置问题。感谢zoyd的回答,我在我的机器java 1.6_34中找到了原因,就像我朋友的机器java 1.6_25是instal一样led。当我们在升级java后检查结果时,两台机器上的结果是相同的。唯一的区别是java版本,我使用的是JDK1.6_35,而friend使用的是JDK1.6_25