Сравнение дат JSTL

Я видел несколько сообщений о сравнении дат в JSTL, но я все еще не могу заставить его работать.

У меня есть поле даты, которое я хочу проверить, после 01-01-1970.

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

Может быть, следует использовать фасоль?

Спасибо !


person Nati    schedule 13.09.2012    source источник


Ответы (5)


Просто используйте <fmt:formatDate>, чтобы извлечь из него год, чтобы может сделать математику на нем.

<fmt:formatDate value="${user.birthDate}" pattern="yyyy" var="userBirthYear" />
<c:if test="${userBirthYear le 1970}">
    <doSomeLogic/>
</c:if>
person BalusC    schedule 13.09.2012
comment
Сравнение года даты является очень ограниченным вариантом использования. Если вы хотите сравнить две даты с точностью до миллисекунды, используйте встроенный компаратор дат. Саураб Анд правильно ответил на него ниже. Это также не решает проблему, похоже, что ОП нуждается в ней как минимум с точностью до дня месяца. - person Michael Peterson; 13.09.2018

Вы можете использовать jstl и usebean что-то вроде этого

    <jsp:useBean id="now" class="java.util.Date"/>
    <c:if test="${someEvent.startDate lt now}"> 
    It's history!</c:if>
person Saurabh Ande    schedule 13.09.2012
comment
есть ли компонент для Unix Date(0)? (01.01.1970) - person Nati; 13.09.2012

Вы также можете добавить логический геттер к вашему bean-компоненту:

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

Таким образом, вы можете использовать следующий EL:

<c:if test="${user.birthDateAfter1970}">
   You were born after the sixties.
</c:if>
person Jasper de Vries    schedule 13.09.2012

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

or lt,=,gt:

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

Мы используем Long getTime() метод java.util.Date.

person gavenkoa    schedule 16.12.2014

Вы можете использовать (устаревшие) методы getYear(), getMonth() и т. д.

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

Обратите внимание, что getYear() возвращает номер года — 1900.

person Dwight    schedule 18.02.2015