I am trying to compare dates, on a basic example and cannot work out the best way of doing it.
The below shows grabbing todays date/time and then comparing it in an IF statement. I am sure the format I have hard coded in is wrong, but when outputing the format that is the format it defaults to. So the question is how do I see if one date is lower than the other and how do I format them to date only?
<p>
<c:set var="testme" value="<%=new java.util.Date()%>"/>
<b><c:out value="${testme}"/></b>
</p>
<c:if test="${testme lt 'Tue Jan 29 16:02:58 GMT 2013'}">
<p><b><span class="wrap">Test date is less.</span></b></p>
</c:if>
util. Date , we can use compareTo , before() , after() and equals() to compare two dates.
Code for compare two dates in JSTL. First format the two dates then compare using
gt-greaterthan
lt-lessthan
ge-greaterthan equal to
le-lessthan equal to
<fmt:formatDate var="date_to_comare" value="${date_to_comare_value}" pattern="yyyy-MM-dd HH:mm:ss"/>
<c:set var="today_date" value="<%=new java.util.Date()%>"/>
<fmt:formatDate var="today_formated_date" value="${today}" pattern="yyyy-MM-dd HH:mm:ss"/>
<c:if test="${date_to_comare lt today_formated_date}">
Write your code here
</c:if>
For starters, don't mix Scriptlets and taglibs/EL. That's just recipe for trouble. Use the one or the other and not both. Assuming that you want to go ahead with taglibs/EL, here's how you could do it:
<p>
<jsp:useBean id="today" class="java.util.Date" />
<b><c:out value="${today}"/></b>
</p>
<fmt:setLocale value="en_US" />
<fmt:parseDate var="testdate" value="Tue Jan 29 16:02:58 GMT 2013" pattern="EEE MMM dd HH:mm:ss z yyyy" />
<c:if test="${today.time gt testdate.time}">
<p><b><span class="wrap">Test date is less than now.</span></b></p>
</c:if>
Note that I also fixed some strange contra-logic in variable names and descriptions.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With