我使用以下代码计算从HTML INPUT TAG中获取的两个日期之间的差异,并且该方法称为servlet服务方法中的方法,
public static long daysBetween (Calendar startDate, Calendar endDate) {
Calendar date = (Calendar) startDate.clone();
long daysBetween = 0;
while (date.before(endDate)) {
date.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}
然后在传递参数期间的调用方法中引发了异常:
java.lang.ClassCastException:java.util.Date无法强制转换为java.util.Calendar
我该如何解决这个问题?
答案 0 :(得分:3)
你的算法缺乏技巧。试试这个:
import java.util.Calendar;
import java.util.concurrent.TimeUnit;
public static long daysBetween (Calendar startDate, Calendar endDate) {
return TimeUnit.MILLISECONDS.toDays(
endDate.getTimeInMillis() - startDate.getTimeInMillis());
}
答案 1 :(得分:0)
您可以使用以下代码:
long difference = endDate.getTime().getTime() - startDate.getTime().getTime();
这将返回以毫秒为单位的差异。
答案 2 :(得分:0)
检查您从哪里调用daysBetween()。您是否传递了java.util.Date
而不是java.util.Calendar
?