2013-01-29 6 views
6

Sto provando a confrontare le date, su un esempio di base e non riesco a trovare il modo migliore per farlo.Ottieni la data odierna in JSP e confrontala con una variabile Date

Il seguente mostra l'acquisizione di data/ora di oggi e il confronto in una dichiarazione IF. Sono sicuro che il formato in cui ho inserito il codice sia sbagliato, ma quando si esegue l'output del formato che è il formato predefinito. Quindi la domanda è: come posso vedere se una data è più bassa dell'altra e come posso formattarla solo per data?

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

risposta

10

Per cominciare, non mescolare Scriptlets e Taglibs/EL. Questa è solo una ricetta per i guai. Usa l'uno o l'altro e non entrambi. Supponendo che si vuole andare avanti con taglibs/EL, ecco come si potesse fare:

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

Si noti che ho anche sistemato qualche strano contropartita logica nomi e le descrizioni delle variabili.

+0

Ciao un buon consiglio su scriplets e taglibs! Lasciandolo letteralmente in una JSP, il testo nell'istruzione "if" non viene mostrato. Vedo che hai usato testdate.time, questo metodo scrive le date solo come orario o data/ora? – user1479931

+0

Forse hai dimenticato di importare il taglib di 'fmt'. Per quanto riguarda il '.time', chiama semplicemente il getter' time' come al solito in EL date.getTime() 'che restituisce un valore' long', valido per il confronto. – BalusC

+0

Oh mio Dio, non importa :(Ok, va bene e mi piace il fatto che sia convertito in tempo per renderlo migliore. – user1479931

0

Codice per confrontare due date in JSTL. Primo formato le due date poi confronta con

gt -greaterthan

lt -lessthan

ge -greaterthan uguale

le -lessthan uguale

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