Java 要获取的日期之间的差异;“很久以前”;

Java 要获取的日期之间的差异;“很久以前”;,java,date,time,Java,Date,Time,我有一个约会。希望将其与当前日期进行比较,并希望在一段时间之前得到结果 Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request. getParameter(date1)); Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request. getParameter(date2)); long diff

我有一个约会。希望将其与当前日期进行比较,并希望在一段时间之前得到结果

Date d1 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.
            getParameter(date1));
Date d2 = new SimpleDateFormat("yyyy-M-dd").parse((String) request.
            getParameter(date2));

long diff = d2.getTime() - d1.getTime();
并且希望在很久以前的格式上有所不同


3小时2分钟前

你有一个长值,它是毫秒,所以

int min= (int) ((diff / (1000*60)) % 60);
int sec= (int) (diff / 1000) % 60 ;
试试看


如果您可以使用另一个库,我会特别推荐,它将作为新的日期API引入JDK 8中,并重新命名为Joda time


与乔达时间的时差

以下是另一种根据您的需求获取的方法,但是
getHours()
getMinutes()
不推荐使用
只需执行
System.out.println((d2.getHours()-d1.getHours())+“小时”+(d2.getMinutes()-d2.getMinutes())+“分钟前”

朋友们。我想我们可以做到这一点,我的代码:

public static String getIntervalUpdateTime(long intervalTime) {
    StringBuilder result = new StringBuilder();
    long interval = intervalTime / 1000;
    final long day = 24 * 60 * 60;
    final long hour = 60 * 60;
    final long minute = 60;
    int detailDay = 0;
    int detailHour = 0;
    int detailMinute = 0;
    int detailSecond = 0;
    if (interval >= day) {
        detailDay = (int) (interval / day);
        interval = interval - detailDay * day;
    }
    if (interval >= hour) {
        detailHour = (int) (interval / hour);
        interval = interval - hour * detailHour;
    }
    if (interval >= minute) {
        detailMinute = (int) (interval / minute);
        interval = interval - detailMinute * minute;
    }
    if (interval > 0) {
        detailSecond = (int) interval;
    }
    result.setLength(0);
    if (detailDay > 0) {
        result.append(detailDay);
        result.append("day");
    }
    if (detailHour > 0) {
        result.append(detailHour);
        result.append("hour");
    }
    if (detailMinute > 0) {
        result.append(detailMinute);
        result.append("minutes");
    }
    if (detailSecond > 0) {
        result.append(detailSecond);
        result.append("seconds");
    }
    return result.toString();
}

这是我的答案。

使用2.3中的类,它就是为此而构建的


如果您只想使用核心Java而不想用数字文字污染代码,请参阅问题答案(特别是)中的示例代码。

long diffInMillis = d2.getTime() - d1.getTime();
long diffInHours = TimeUnit.MILLISECONDS.toHours(diffInMillis);
long diffInMins = TimeUnit.MILLISECONDS.toMinutes(diffInMillis);
System.out.printf("%d hours %d mins ago%n", diffInHours, (diffInMins - TimeUnit.HOURS.toMinutes(diffInHours)));

可能包含您想要的答案。@SimplyPanda不,不是那个。当然至少包含一个方向。调用此方法,param is diff。您将得到答案。实际上,包含在Java 8中。灵感来源于Joda Time,但经过重新设计。
long diffInMillis = d2.getTime() - d1.getTime();
long diffInHours = TimeUnit.MILLISECONDS.toHours(diffInMillis);
long diffInMins = TimeUnit.MILLISECONDS.toMinutes(diffInMillis);
System.out.printf("%d hours %d mins ago%n", diffInHours, (diffInMins - TimeUnit.HOURS.toMinutes(diffInHours)));