如何使用JodaTime以毫秒为单位获得2个日期之间的时差

mad*_*dhu 8 java jodatime

我要设计一个应用程序,我需要在两个日期之间得到确切的时间差.例如:

Date1:31/05/2011 12:54:00
Date2:31/05/2011 13:54:00
Run Code Online (Sandbox Code Playgroud)

我尝试使用,getTime()但我没有得到确切的结果.

上述输入的预期输出为3600000(60*60*1000)毫秒,但我得到46800000(13*60*60*1000).

当我浏览不同的java论坛时,人们建议使用JodaTime.

我仍然无法得到确切的结果.

我工作的时区是伦敦(GMT).

Eng*_*uad 7

public static long getDiff(Calender cal1, Calender cal2)
{
    return Math.abs(cal1.getTimeInMillis() - cal2.getTimeInMillis());
}
Run Code Online (Sandbox Code Playgroud)


小智 7

初始化两个dateTime并使用Period:

DateTime dt1 = new DateTime(2013,9,11,9,58,56);
DateTime dt2 = new DateTime(2013,9,11,9,58,59);
Period p = new Period(dt1, dt2, PeriodType.millis());
Run Code Online (Sandbox Code Playgroud)

要以毫秒为单位获得差异:

System.out.println(p.getValue(0));
Run Code Online (Sandbox Code Playgroud)

  • 使用`p.getMillis()`会比引用索引更好 (5认同)
  • joda-time 的 Period 类(从 joda-time 2.9.9 开始)仅支持毫秒字段中的 `int` 值,因此当两个日期之间的毫秒差异溢出整数存储时,这种方法会中断。要查看它是否中断,请将 `dt1` 更改为,`dt1 = new DateTime(1970, 1, 1, 0, 0, 0);` (5认同)