【问题标题】:JSTL Date comparisonJSTL 日期比较
【发布时间】:2012-09-06 07:50:41
【问题描述】:

我看过一些关于 JSTL 中日期比较的帖子,但我仍然无法使用它。

我有一个日期字段,我想测试它是否在01-01-1970 之后。

<c:if test="${user.BirthDate > whatGoesHere}">
    <doSomeLogic/>
</c:if>

也许应该使用 bean?

谢谢!

【问题讨论】:

    标签: jstl jsp-tags java.util.date


    【解决方案1】:

    你可以像这样使用jstl和usebean

        <jsp:useBean id="now" class="java.util.Date"/>
        <c:if test="${someEvent.startDate lt now}"> 
        It's history!</c:if>
    

    【讨论】:

    • 有 Unix Date(0) 的 bean 吗? (01/01/1970)
    【解决方案2】:

    您还可以为您的 bean 添加一个布尔 getter:

    public boolean isBirthDateAfter1970(){
        return birthDate.after(dateOf1970);
    }
    

    所以你可以使用下面的EL:

    <c:if test="${user.birthDateAfter1970}">
       You were born after the sixties.
    </c:if>
    

    【讨论】:

      【解决方案3】:

      只需使用&lt;fmt:formatDate&gt; 从中提取年份,以便您对其进行数学计算。

      <fmt:formatDate value="${user.birthDate}" pattern="yyyy" var="userBirthYear" />
      <c:if test="${userBirthYear le 1970}">
          <doSomeLogic/>
      </c:if>
      

      【讨论】:

      • 比较日期的年份是 Avery 有限的用例。如果要将两个日期的比较精确到毫秒,请使用内置的日期比较器。 Saurabh Ande 在下面正确回答了它。这也不能解决问题,看来 OP 至少需要精确到每月的某天。
      【解决方案4】:
      <c:if test="${date1.time > date2.time}">...</c:if>
      

      lt,=,gt:

      <c:if test="${date1.time gt date2.time}">...</c:if>
      

      我们利用java.util.DateLong getTime()方法。

      【讨论】:

        【解决方案5】:

        您可以使用(已弃用)方法getYear()getMonth() 等。

        <c:if test="${user.BirthDate.year > 99}">
          <doSomeLogic/>
        </c:if>
        

        请注意,getYear() 返回年份编号 - 1900。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-12-31
          • 2018-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-20
          • 2020-09-08
          相关资源
          最近更新 更多