0
我正在将时间转换为使用2000.01.01作为其时代的外部系统。我需要毫秒以来的纪元进行各种计算,所以我通过使用常数(忽略闰秒等的细微差别等;我的常数可能不是确切的,但现在并不重要)之间进行转换。虽然测试,我注意到时间转换的怪异。GregorianCalendar自从时代以来不稳定的时间
Calendar epoch = new GregorianCalendar(TimeZone.getTimeZone("Zulu"));
epoch.set(2000,Calendar.JANUARY,1,0,0,0);
System.out.println("EPOCH DIFF:"+(epoch.getTime().getTime()-946684800000L));
你会认为这总会给出相同的结果。而它,如果你在一个循环中运行它:
for(int i = 0; i < 10; i++) {
System.out.println("EPOCH DIFF:"+(epoch.getTime().getTime()-946684800000L));
}
(RESULT: -400)
但是,如果你在一个新的虚拟机再次运行和重新的价值不断变化(貌似)随机!我只是跑它在不同的JVM快速连续5次,得到不同的结果:
-276
-612
-376
-458
-573
我重做与不同的时区的测试,并得到了同样的问题。
有没有人有任何想法可能会导致此?
Argghh我不能相信我错过了这一点。谢谢。 –