2016-03-21 11 views
1

私は2つの日付を持っています。 1989年3月21日、2016年3月21日と私はそれらの日付の違いの期間を見つけるしたい。このため、私は次のコードを試していますが、日付の差の長さを得ることができません。2つの日付の間の違いの持続時間を見つける方法

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で2つの日付の差の時間を見つけるには?](http://stackoverflow.com/questions/17940200/how-to-find-the-duration-of- Javaでの2つの差分) – 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(); 
    } 
関連する問題