我试图找出两个日期之间的天数差异。 我正在使用这种方法
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天到达。如何实现。 我希望将日期显示为今天,昨天和之前的日期。
答案 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);
}