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));
이렇게하면 항상 같은 결과가 나타납니다. 다시 새로운 VM에서 실행하지만 경우
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 그럴 수 없어 내가 그걸 놓쳤다 고 생각해. 감사. –