2012-02-14 59 views
1

我使用以下代码来计算从HTML INPUT TAG中取得的两个日期之间的差异,并且该方法被称为服务中的方法小服务程序的方法中,在传递参数使用java计算两天之间的天数,从HTML输入标记中计算日期

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

你可以使用下面的代码:

long difference = endDate.getTime().getTime() - startDate.getTime().getTime(); 

这将返回以毫秒为单位的差异。

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()); 
} 
+0

并一如既往的日期和时间;考虑http://joda.sourceforge.net/ – 2012-02-14 19:39:43

0

检查你在哪里调用daysBetween()from。您是否通过java.util.Date而不是java.util.Calendar