将一些计算例程从.Net移植到Java,但Date类似乎存在一些精度问题。也许我已经睁大眼睛盯着这个,但我不知道为什么结果会有所不同。DateTime精度差异.NET vs 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);
}
的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();
}
你是说格式不同,或者它们返回不同的值?如果它们返回不同的值,那可能是因为它们相距几毫秒? – soandos 2011-05-12 16:57:48
也不要在java中使用java日期,请使用joda日期:) – bwawok 2011-05-12 17:06:02
是否为.NET完成了Noda时间?我知道有人正在研究Joda时间的.NET端口... – David 2011-05-12 17:21:47