Miz*_*zor 4 .net c# java datetime date
我将一些计算例程从.Net移植到Java但是在Date类中似乎存在一些精度问题.也许我已经盯着自己,但我无法弄清楚为什么结果会有所不同.
我应该如何处理日期以获得跨平台的相同数字(毫秒)?
.净
[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);
}
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
精彩!
问题:
所以你将.Net 2月与Java游行进行比较.而且,正如Arjan所说,3月27日是许多时区的夏令时变化.
使用Java Calendar时,这是一个非常常见的问题.为避免这种情况,您应该使用指定的常量,如下所示:
Date d1 = createDate(2011, Calendar.MARCH, 26, 19, 25, 24); // Calendar.MARCH == 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2132 次 |
| 最近记录: |