两个日期之间的天数差异没有给出正确的结果

时间:2017-01-13 06:51:53

标签: android android-calendar

我试图找出两个日期之间的天数差异。 我正在使用这种方法

  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点发布了一些内容,当今天午夜12时,差异应该是1,日期应该像昨天一样。

但是日子仍然是0,直到第5天到达。如何实现。 我希望将日期显示为今天,昨天和之前的日期。

3 个答案:

答案 0 :(得分:0)

试试这个(在这个函数中传递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;
    }

答案 1 :(得分: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;
}

答案 2 :(得分:0)

尝试使用comareTo方法,它会将日期差异作为整数值返回。     private void getDate()抛出ParseException {     SimpleDateFormat sdf = new SimpleDateFormat(" yyyy-dd-mm");     String date1 =" 2017-13-01&#34 ;;     字符串date2 =" 2017-14-01&#34 ;;

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

int compare = d2.compareTo(d1);
Log.e("differece",""+compare);
}