2017-01-13 5 views
0

두 날짜 간의 날짜 차이를 찾으려고합니다. 오늘의 차이가 1이어야하며 날짜가 어제처럼해야 자정 12 때 내가두 날짜 사이의 날짜의 차이가 적절한 결과를 제공하지 않음

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를 사용하거나 이전의 자바 버전에있는 경우, Joda 시간 – 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

[Java에서 Epoch 이후로 일, 주 및 월 수 얻기]의 가능한 복제본 (http://stackoverflow.com/questions/6158053/get-the-number-of-days-weeks-and-months- since-epoch-in-java) – AxelH

답변

0

이 (2 날짜가이 함수에서 객체를 전달하고 당신은 정확한 DIFF를 얻을 것이다 일에 두 날짜 사이.) 시도 :

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 방법을 사용해보십시오 정수 값으로. private void getDate() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-dd-mm"); 문자열 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); 
}