2013-01-29 8 views
6

Ich versuche, Daten zu vergleichen, an einem einfachen Beispiel und kann nicht die beste Art und Weise, es zu tun.Holen Sie sich das heutige Datum in JSP und vergleichen Sie es mit einer Date-Variablen

Die folgende Tabelle zeigt das aktuelle Datum/die aktuelle Uhrzeit und vergleicht es dann in einer IF-Anweisung. Ich bin mir sicher, dass das Format, in dem ich hart codiert habe, falsch ist, aber wenn ich das Format ausspreche, das das Format ist, auf das es sich standardmäßig bezieht. Die Frage ist also, wie sehe ich, wenn ein Datum niedriger ist als das andere und wie formatiere ich sie nur bis zum Datum?

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

Antwort

10

Für den Anfang nicht mischen Scriptlets und Taglibs/EL. Das ist nur ein Rezept für Ärger. Benutze das eine oder das andere und nicht beides. Unter der Annahme, dass Sie voran gehen wollen mit Taglibs/EL, hier ist, wie Sie es tun könnte:

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

Bitte beachte, dass ich einige seltsame kontra Logik in Variablennamen und Beschreibungen auch fixiert.

+0

Hallo ein paar tolle Tipps zu Scriplets und Taglibs! Wörtlich das in eine JSP fallen lassen, wird der Text in der "if" -Anweisung nicht angezeigt. Ich sehe Sie testdate.time verwendet, schreibt diese Methode die Daten nur als Zeit oder Datum/Uhrzeit? – user1479931

+0

Vielleicht haben Sie vergessen, die 'fmt' Taglib zu importieren. Was die '.time' anbelangt, ruft sie einfach den 'Zeit'-Getter auf die übliche EL-Weise auf, wie in' date.getTime()', was einen 'langen' Wert zurückgibt, der für einen Vergleich gültig ist. – BalusC

+0

Oh lieber, kein Import :(Ok, das sieht gut aus und ich mag die Tatsache, dass es in Zeit umgewandelt wurde, um es besser zu machen. – user1479931

0

Code zum Vergleich zweier Daten in JSTL. Erstes Format der beiden Daten vergleichen, dann unter Verwendung von

gt -greaterthan

lt -lessthan

ge -greaterthan gleich

le -lessthan gleich

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