有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中查找日期之间的差异

我是java新手。我对java中的日期算法有点困惑。我有以下场景,我想找出两个日期之间的差异:-

java.util.Date objDt1 = getDate1FromSrc1();  // I am obtaining it from src1
java.util.Date objDt2 = getDate2FromOtherSrc(); // I am getting dt2 by other way.

现在,我想找出两个日期之间的差异,输出必须是另一个日期对象

因此,我编写了以下代码:-

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();

但是,我得到了一些非常好的结果。例如,如果objDt1是"02/22/2016 09:00:00",objDt2是"02/22/2016 11:00:00",那么我希望objDiff是"02:00:00"作为输出,但我没有得到

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

提前谢谢


共 (1) 个答案

  1. # 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)));
    }