2016-03-21 45 views
1

我有兩個日期,例如。 1989年3月21日,2016年3月21日,我想找到這些日期之間的差異持續時間。爲此,我正在嘗試下面的代碼,但我無法獲得日期差異的持續時間。如何找到兩個日期之間的差異持續時間

public String getTimeDiff(Date dateOne, Date dateTwo) { 
     String diff = ""; 
     long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime()); 
     diff = String.format("%d hour(s) %d min(s)", TimeUnit.MILLISECONDS.toHours(timeDiff), 
       TimeUnit.MILLISECONDS.toMinutes(timeDiff) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(timeDiff))); 
     return diff; 
} 
+3

的可能的複製[如何找到在Java中的兩個日期之間差異的時間?(http://stackoverflow.com/questions/17940200/how-to-find-the-duration-of- – Pragnani

+0

java.text.ParseException:不可解析日期:「1989-3-21」(在偏移量5)這個異常來了 –

回答

2

調用public String getTimeDiff(Date dateOne, Date dateTwo)之前,初始化日期,像這樣:

Date dateOne=null,dateTwo=null; 
    try { 
     dateOne = new SimpleDateFormat("yyyy-MM-dd").parse("2016-3-21"); 
     dateTwo = new SimpleDateFormat("yyyy-MM-dd").parse("1989-3-21"); 
    } 
    catch (ParseException ex) {  
    } 
    System.out.println(getTimeDiff(dateOne,dateTwo)); 



    public String getTimeDiff(Date dateOne, Date dateTwo) { 
     String diff = ""; 
     long timeDiff = Math.abs(dateOne.getTime() - dateTwo.getTime()); 
     diff = String.format("%d date(s) ", TimeUnit.MILLISECONDS.toDays(timeDiff)); 
     return diff; 
    } 

由於您的日期是不是在其默認的格式,你將不得不使用一個SimpleDateFormat的來明確地聲明你的日期的格式。

+0

等待讓我試試邏輯 –

+0

但我必須得到不是以小時爲單位的年數的差異 –

+0

檢查我的編輯,因爲你想要日期差異,你還必須在你的功能做一些改變。 – Sevle

0

here

long diff = dt2.getTime() - dt1.getTime(); 
    long diffSeconds = diff/1000 % 60; 
    long diffMinutes = diff/(60 * 1000) % 60; 
    long diffHours = diff/(60 * 60 * 1000); 
    int diffInDays = (int) ((dt2.getTime() - dt1.getTime())/(1000 * 60 * 60 * 24)); 
+0

等待讓我試試你的邏輯 –

0

嘗試使用此

try { 
      /// String CurrentDate= "10/6/2016"; 
      /// String PrviousDate= "10/7/2015"; 
      Date date1 = null; 
      Date date2 = null; 
      SimpleDateFormat df = new SimpleDateFormat("MM/dd/yyyy"); 
      date1 = df.parse(CurrentDate); 
      date2 = df.parse(PrviousDate); 
      long diff = Math.abs(date1.getTime() - date2.getTime()); 
      long diffDays = diff/(24 * 60 * 60 * 1000); 


      System.out.println(diffDays); 

     } catch (Exception e) { 
      System.out.println("exception " + e); 
     } 
0

走差異化和並調用該方法; long diff = dt2.getTime() - dt1.getTime();

public static String toHumanReadableTime(long diff) { 
     Long hour = TimeUnit.HOURS.convert(diff, TimeUnit.MILLISECONDS); 
     diff= diff% (1000 * 60 * 60); 
     Long minutes = TimeUnit.MINUTES.convert(diff, TimeUnit.MILLISECONDS); 
     diff= diff% (1000 * 60); 
     Long seconds = TimeUnit.SECONDS.convert(diff, TimeUnit.MILLISECONDS); 
     diff= diff% 1000; 
     Long milisec = diff; 

     StringBuilder buffer = new StringBuilder(); 
     if (hour != null && hour > 0) { 
      buffer.append(hour).append(" Hour "); 
     } 
     if (minutes != null && minutes > 0) { 
      buffer.append(minutes).append(" Minute "); 
     } 
     buffer.append(seconds).append(" Second "); 

     buffer.append(milisec).append(" Millisecond "); 

     return buffer.toString(); 
    }