2017-01-13 13 views
0

2つの日付間の日数の差異を見つけようとしています。それが今日の差は1でなければならず、日付が昨日のようにする必要があり、深夜で12あるとき 私は2つの日付間の日数の差が適切な結果を与えない

Calendar currentTimeCalendar = Calendar.getInstance(); 
    Calendar postModificationTimeCalendar = Calendar.getInstance(); 
    postModificationTimeCalendar.setTime(dateeventoccured); //dateeventoccured is in format = Tue Jan 03 00:44:46 EST 2017 

    long diffInMillis = currentTimeCalendar.getTimeInMillis() - postModificationTimeCalendar.getTimeInMillis(); 
    long days = diffInMillis/ (24*60*60*1000); 

今すぐ問題が想定され、このアプローチを使用しています、私は、午後5時昨日何かを掲示しました。

しかし、日は0のままで、翌日5に達するまでです。達成する方法。 今日の日付、昨日の日付、前の日付を表示したい。

+0

うーん、私はあなたがのLocalDateTimeのAPIを使用するか、古いバージョンのJavaの上にある場合、ジョダ時間 – Dexter

+0

は、使用して検討していることをお勧め[ 'Java.time.LocalDate'](https://docs.oracle。 com/javase/8/docs/api/java/time/LocalDate.html)または['org.joda.time.LocalDate'](http://www.joda.org/joda-time/apidocs/org/joda /time/LocalDate.html)? –

+0

[EpochからJavaで日数、週数、月数を取得]の可能な複製(http://stackoverflow.com/questions/6158053/get-the-number-of-days-weeks-and-months-以来、エポック・イン・ジャック) – AxelH

答えて

0

(2つの日付は、この機能では、オブジェクトとあなたが正確な差分を取得する2つの日付の間の日に渡す。)これを試してみてください:

public long getDays(Date d1, Date d2) { 
     if (d1 != null && d2 != null) { 
      long diff = getStartDate(d1).getTimeInMillis() - getStartDate(d2).getTimeInMillis(); 
      return TimeUnit.MILLISECONDS.toDays(diff); 
     } else { 
      return -1; 
     } 
    } 

    public Calendar getStartDate(Date date){ 
     Calendar cal = Calendar.getInstance(); 
     cal.setTime(date); 
     cal.set(Calendar.HOUR_OF_DAY, 0); 
     cal.set(Calendar.MINUTE, 0); 
     cal.set(Calendar.SECOND, 0); 
     cal.set(Calendar.MILLISECOND, 0); 
     return cal; 
    } 
0
private int getDifferenceDay(Date DateStart, Date DateEnd) { 
    long diff = DateEnd.getTime() - DateStart.getTime(); 
    long seconds = diff/1000; 
    int minutes = (int) seconds/60; 
    int hour = minutes/60; 
    int day = hour/24; 
    return day; 
} 
0

comareToメソッドを使用してみてください、それは日付差を返します。整数値として。 SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-dd-mm"); プライベートvoid getDate()はParseExceptionをスローします。 文字列date1 = "2017-13-01"; 文字列date2 = "2017-14-01";

Date d1=sdf.parse(date1); 
Date d2=sdf.parse(date2); 

int compare = d2.compareTo(d1); 
Log.e("differece",""+compare); 
} 
関連する問題