注册 登录
编程论坛 J2EE论坛

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

qxhan1128 发布于 2007-01-31 09:43, 558 次点击

计算日期间隔一直出错,大家帮忙看一下
<%@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"));

2 回复
#2
支离破碎2007-01-31 09:49
类型转化。
found : long
required: int
#3
千里冰封2007-01-31 09:52

首先,你不能把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,当然会错

1