1

您好,我正在尝试在 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>

提前致谢!

4

3 回答 3

6

将时间转换为日期并将其与当前日期进行比较。

转换为日期:

<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>
于 2014-05-20T15:25:43.610 回答
6

我正在分享一些解决问题的方法。

第一的:

我假设它是一个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 方法,因此您的两个对象必须属于同一类才能进行此比较。

如果从数据库中取回一个字符串,则必须使用它来获取 java 日期。如果你从数据库中取回 a java.sql.Date,它会变得更加棘手。黑客将是去java.sql.Date -> String -> java.util.Date using <fmt:formatDate> and <fmt:parseDate>

资源链接:

通过 JSTL 将当前日期与 db 中的 dat 进行比较


第二:

<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>

资源链接:

JSTL 日期与 JSP 中当前时间(现在)的比较

于 2016-05-15T18:50:39.293 回答
2

在视图层中包含逻辑是一种不好的做法。

相反,您应该做的是在控制器内部进行计算并将结果作为变量放入视图中,并在条件内部使用:

<c:if test="${timeLessThanNow}">
  <h1>print something</h1>
</c:if>
于 2014-05-20T15:01:46.210 回答