查找java中日期之间的差异

时间:2016-03-24 05:39:14

标签: java date date-arithmetic

我是java的新手。我对java中的日期算术有些轻微的困惑。我有以下场景,我想找到两个日期之间的差异: -

Calendar objCal1     = Calendar.getInstance();
Calendar objCal2     = Calendar.getInstance();
objCal1.setTime(objDt1);
objCal2.setTime(objDt2);

objCal1.add(Calendar.DAY_OF_MONTH,  -objCal2.get(Calendar.DAY_OF_MONTH));
objCal1.add(Calendar.MONTH,         -objCal2.get(Calendar.MONTH));
objCal1.add(Calendar.YEAR,          -objCal2.get(Calendar.YEAR));
objCal1.add(Calendar.HOUR_OF_DAY,   -objCal2.get(Calendar.HOUR_OF_DAY));
objCal1.add(Calendar.MINUTE,        -objCal2.get(Calendar.MINUTE));
objCal1.add(Calendar.SECOND,        -objCal2.get(Calendar.SECOND));

java.util.Date objDiff = objCal1.getTime();

现在,我想找到两个日期之间的差异,输出必须是其他日期对象。

所以,我写了以下代码: -

"02/22/2016 09:00:00"

但是,我得到了一些奇怪的结果。例如。如果objDt1是"02/22/2016 11:00:00"且objDt2是"02:00:00",那么我期望objDiff为{{1}}作为输出,我没有得到。

你能告诉我我在这里做错了什么,以及解决这个问题的正确方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:1)

为了找到两个日期之间的差异,你可以简单地将其转换为long,如下所示:

java.util.Date objDt1 = getDate1FromSrc1();
java.util.Date objDt2 = getDate2FromOtherSrc();

long date1 = objDt1.getTime();
long date2 = objDt2.getTime();
System.out.println("Difference (In Seconds): " + (date2 - date1)/1000);

如果您希望此差异为HH:mm:ss格式,那么您可以执行以下操作:

public static void main (String[] args) throws Exception
{
    SimpleDateFormat sf = new SimpleDateFormat("HH:mm:ss");
    java.util.Date objDt1 = getDate1FromSrc1();
    java.util.Date objDt2 = getDate2FromOtherSrc();

    long date1 = objDt1.getTime();
    long date2 = objDt2.getTime();
    System.out.println("Difference: " + sf.format(new Date((date2 - date1)/1000)));
}