日历使用相同的数据提供不同的值。 也就是说,
calT.setTimeZone(_.calc.ap.getTZ());
calT.setTimeInMillis(_.calc.ap.getCalMainTime());
calT.setTimeZone(timezonebase);
calT.setTimeInMillis(curData.getTimeBase());
在代码的不同部分给出不同的值。
_.calc.ap.getTZ()
和timezonebase相同,等于"Europe/Moscow"
_.calc.ap.getCalMainTime()
和curData.getTimeBase()
的时间(毫秒)相同且等于568026000000L
(1 Jan 1988 12:00 GMT+03:00
)
结果相差一小时:( 1 Jan 1988 12:00 GMT+03:00
)或(1 Jan 1988 13:00 GMT+03:00
我认为两年前俄罗斯捣乱的这个虫子已经取消了夏令时。但是如何解决这个问题?
答案 0 :(得分:0)
我发现了一个难看的解决方案。可能会有人发现更好。重新初始化日历。
calT = Calendar.getInstance();
calT.setTimeZone( .calc.ap.getTZ()); calT.setTimeInMillis( .calc.ap.getCalMainTime());
calT = Calendar.getInstance();
calT.setTimeZone(timezonebase); calT.setTimeInMillis(curData.getTimeBase());