当前位置: 代码迷 >> Java Web开发 >> 计算日期间隔一直出错,大家帮忙看一下
  详细解决方案

计算日期间隔一直出错,大家帮忙看一下

热度:174   发布时间:2007-01-31 09:43:30.0
计算日期间隔一直出错,大家帮忙看一下

计算日期间隔一直出错,大家帮忙看一下
<%@page contentType="text/html; charset=gb2312" import="java.sql.Date,java.text.DateFormat,java.util.*,java.io.*,java.text.*,java.sql.*,com.util.*,com.fredck.FCKeditor.*"%>

<%!
//计算日期间隔
int getDays(Date sd,Date ed){
return (ed.getTime()-sd.getTime())/(3600*24*1000);
}
%>
<%=getDays("2007-1-31","2007-1-11")%>


错误提示

An error occurred at line: 11 in the jsp file: /News/test.jsp
Generated servlet error:
C:\tomcat\work\Catalina\localhost\_\org\apache\jsp\News\test_jsp.java:22: possible loss of precision
found : long
required: int
return (ed.getTime()-sd.getTime())/(3600*24*1000);
^


An error occurred at line: 17 in the jsp file: /News/test.jsp
Generated servlet error:
C:\tomcat\work\Catalina\localhost\_\org\apache\jsp\News\test_jsp.java:69: getDays(java.sql.Date,java.sql.Date) in org.apache.jsp.News.test_jsp cannot be applied to (java.lang.String,java.lang.String)
out.print(getDays("2007-1-31","2007-1-11"));


----------------解决方案--------------------------------------------------------
类型转化。
found : long
required: int

----------------解决方案--------------------------------------------------------

首先,你不能把String转为Date
int getDays(Date sd,Date ed){
return (ed.getTime()-sd.getTime())/(3600*24*1000);
}
%>
<%=getDays("2007-1-31","2007-1-11")%>
你这个方法,定义的时候,要求传入的参数是Date对象,可是你传进去的却是String对象,这当然会错


其次,你(ed.getTime()-sd.getTime())/(3600*24*1000);这里运算的时候,ed.getTime返回的是long,可是运算完后,却把它赋给int,当然会错


----------------解决方案--------------------------------------------------------
  相关解决方案