计算Android中的日期差异天数

时间:2015-11-11 13:44:08

标签: android datetime

我想计算两个日期之间的差异。

我有类似的东西:

String deadline = "2015-08-15";

我收到了当前日期:

String timeStamp = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()).format(new Date());

例如今天就是这样:

  

2015年11月11日

如何计算这两个日期之间的天数?如果日期过去会发生什么。

4 个答案:

答案 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;
}