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)));