일부 계산 루틴을 .Net에서 Java로 이식하지만 날짜 클래스에 정밀도 문제가있는 것 같습니다. 어쩌면 나는 이것에 관해서 눈이 멀었지만 왜 결과가 다른지 알 수 없다.DateTime 정밀도 차이 .NET 대 Java
플랫폼간에 동일한 숫자 (밀리 초)를 얻으려면 날짜를 어떻게 처리해야합니까?
닷넷
[Test] public void foo() {
DateTime dt1 = new DateTime(2011, 2, 26, 19, 25, 24);
DateTime dt2 = new DateTime(2011, 2, 28, 18, 40, 25);
double millis = (dt2 - dt1).TotalMilliseconds;
Assert.AreEqual(170101000, millis);
}
자바
@Test public void foo() throws Exception {
Date d1 = createDate(2011, 2, 26, 19, 25, 24);
Date d2 = createDate(2011, 2, 28, 18, 40, 25);
long millis = d2.getTime() - d1.getTime();
Assert.assertEquals(166501000, millis, 0.01);
}
private static Date createDate(int year, int month, int day,
int hour, int minute, int second) {
Calendar instance = Calendar.getInstance();
instance.clear();
instance.set(year, month, day, hour, minute, second);
return instance.getTime();
}
형식이 다르거 나 다른 값을 반환한다고합니다. 그들이 다른 값을 반환한다면, 그것은 그들이 몇 밀리 초 간격으로 움직이고 있기 때문일 수 있습니까? – soandos
Java에서 Java Date를 사용하지 마십시오. Joda Date를 사용하십시오. – bwawok
Noda Time은 .NET 용으로 완성 되었습니까? 누군가 Joda 시간의 .NET 포트에서 작업하고 있다는 것을 알고 있습니다 ... – David