我想计算两个日期之间的差异。
我有类似的东西:
String deadline = "2015-08-15";
我收到了当前日期:
String timeStamp = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());
例如今天就是这样:
2015年11月11日
如何计算这两个日期之间的天数?如果日期过去会发生什么。
答案 0 :(得分:6)
我用这个
public String getDateAgo() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
Date date = sdf.parse(createdAt);
Date now = new Date(System.currentTimeMillis());
long days = getDateDiff(date, now, TimeUnit.DAYS);
if (days < 7)
return days + "d";
else
return days / 7 + "w";
} catch (ParseException e) {
e.printStackTrace();
}
return "ERROR";
}
private long getDateDiff(Date date1, Date date2, TimeUnit timeUnit) {
long diffInMillies = date2.getTime() - date1.getTime();
return timeUnit.convert(diffInMillies, TimeUnit.MILLISECONDS);
}
答案 1 :(得分:2)
使用jodatime:
String date1 = "2015-11-11";
String date2 = "2013-11-11";
DateTimeFormatter formatter = new DateTimeFormat.forPattern("yyyy-MM-dd");
DateTime d1 = formatter.parseDateTime(date1);
DateTime d2 = formatter.parseDateTime(date2);
long diffInMillis = d2.getMillis() - d1.getMillis();
Duration duration = new Duration(d1, d2);
int days = duration.getStandardDays();
int hours = duration.getStandardHours();
int minutes = duration.getStandardMinutes();
答案 2 :(得分:0)
您可以使用Calendar
类。对于过去的时间,您可以将日,月和年传递给日历类,之后您可以将其转换为milisecond
。你可以在当前时间这样做。之后,您可以将其转换为milisecond
。然后你有milisecond
单位的2值。并且您可以计算它们的差异,然后您可以将此结果milisecond
转换为Date
。阅读Calendar
类文档及其方法非常有用。
答案 3 :(得分:0)
试试这个,
public static long getDatesDifferenceInDays(Date startDate,Date endDate) {
long different = endDate.getTime() - startDate.getTime();
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = different / daysInMilli;
return elapsedDays;
}