使用java计算两天之间的天数,来自HTML输入标签的日期

时间:2012-02-14 19:24:53

标签: java datetime

我使用以下代码计算从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

我该如何解决这个问题?

3 个答案:

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