我是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}}作为输出,我没有得到。
你能告诉我我在这里做错了什么,以及解决这个问题的正确方法是什么?
提前致谢。
答案 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)));
}