I am porting some calculation procedures from .Net to Java, but in the Date classes there seems to be some accuracy issues. I may have stared at this, but I cannot understand why the results are different.
How do I process dates to get the same numbers (milliseconds) on platforms?
.Net
[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); }
Java
@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(); }