这段代码可以正常工作(减去2个日期之间的日期),但是在Eclipse中它显示为错误,并且我试图找出如何清除它以便不会出错。我没有写代码,顺便说一句...

<c:set var="start" value="${move.moveStart}"/>
<jsp:useBean id="start" type="java.lang.String"/>
<c:set var="end" value="${move.moveEnd}"/>
<jsp:useBean id="end" type="java.lang.String"/>

<%
int days = 0;
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dstart = sdf.parse(start);
Date dend = sdf.parse(end);
long milsecs = dend.getTime() = dstart.getTime();
days = (int)(milsec/(1000*60*60*24));
}catch(ParseException pe){
;
}
%>


我在sdf.parse(start)和。(end)上收到错误消息,称“它无法解析为变量”。我在这里想念什么?

最佳答案

由于您有一个名为move的对象,并且您的计算似乎都不依赖于请求,因此为什么不在此对象上添加方法getDuration却实际上是

@Transient
public int getDuration() {
    int days = 0;
    try{
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         Date dstart = sdf.parse(start);
         Date dend = sdf.parse(end);
         long milsecs = dend.getTime() = dstart.getTime();
         days = (int)(milsec/(MILLIS_IN_A DAY));
    }catch(ParseException pe){
    ;
    }
    return days;
}


这样你就可以在你的jsp中说

<c:out value = "${move.duration}"/>


可以通过查看此答案https://stackoverflow.com/a/3300078/9422来实现getDuration方法

07-25 22:45