您好我尝试在jsp文件中使用jstl比较日期和当前时间。 如何使用jstl将日期与当前时间进行比较? 我有这个:
<jsp:useBean id="currentDate" type="java.util.Date"/>
<fmt:formatDate var="now" value="${currentDate} pattern="yyyy-MM-dd"/>
<c:if test="${ h.time < now }">
<h1>print something</h1>
</c:if>
提前感谢!
答案 0 :(得分:5)
将时间转换为日期并将其与当前日期进行比较。
转换为日期:
<jsp:useBean id="dateValue" class="java.util.Date" />
<jsp:setProperty name="dateValue" property="time" value="${h.time}" />
比较
<c:if test="${dateValue le now}">
//do something
</c:if>
答案 1 :(得分:4)
我正在分享一些解决问题的方法。
我假设它是java.util.Date
。
您可以像这样获得当前日期
<jsp:useBean id="now" class="java.util.Date"/>
然后您可以使用EL表达式比较它们:
{code}
<c:if test="${submitDate < now}">
We have not yet reached the submit date.
</c:if>{code}
EL使用java compareTo方法,因此两个对象必须属于同一个类才能使这个比较起作用。
如果从数据库中获取String,则必须使用获取Java日期。
如果从数据库中返回java.sql.Date
,则会变得更加棘手。黑客将是java.sql.Date -> String -> java.util.Date using <fmt:formatDate> and <fmt:parseDate>
compare current date with dat from db by JSTL
<fmt:parseDate value="${found.submitDate}" pattern="yy/MM/dd" var="submitDate"/>
<c:if test="${submitDate <now}">
We have not yet reached the submit date.
</c:if>
一种简洁的方法是使用jsp:useBean
标记创建包含当前日期/时间的页面范围变量,然后使用普通JSTL来比较对象。
首先创建页面范围的java.util.Date object
(使用jsp:useBean),然后使用$ {now}来引用当前日期/时间。这是一个常规JSP对象,因此普通的JSTL运算符使用此变量:
<jsp:useBean id="now" class="java.util.Date"/>
<c:if test="${someEvent.startDate lt now}">
It's history!
</c:if>
答案 2 :(得分:2)
在视图层中包含逻辑是一种不好的做法。
你应该做的是,在控制器内部进行计算并将结果作为变量放在视图中,并在条件内部使用:
<c:if test="${timeLessThanNow}">
<h1>print something</h1>
</c:if>