PDA

Visualizza la versione completa : [jsp] Problemi con la casse calendar!!!


Filippo1980
18-03-2004, 13:22
Ciao a tutti,
vi ilustro brevemente il io problema:
io ho bisogno di fare operazioni con le date (del tipo fare un ciclo for aumentando la data ogni volta di un giorno) e poi metterla in formato gg/MM/aaaa
ora vi scrivo quello che ho fatto fino ad ora ed il risultato:

[JSP PAGE]
<%
String dal=request.getParameter("dal"); //prendo il valore dal che gli passo da una form

//--spezzo la data in giorno, mese e anno in valori interi
int gg=Integer.valueOf(dal.substring(0,2)).intValue();
int mm=Integer.valueOf(dal.substring(3,5)).intValue();
int aa=Integer.valueOf(dal.substring(6,10)).intValue() ;

java.util.Calendar dalCal = java.util.Calendar.getInstance(); //instanzio la variabile calendar

dalCal.set(aa,mm,gg); //setto i vaori della classe calendar alla data che gli passo nella form

dal=String.valueOf((dalCal.DATE)).toString()+"/"+String.valueOf(dalCal.MONTH).toString()+"/"+String.valueOf(dalCal.YEAR).toString(); //ritrasformo la data in stringa nel forato gg/MM/aaaa
%>

[/JSP PAGE]

Ora qualsiasi variabile gli passo quando cerco di stapare la variabile dal mi da come risultato finale 5/2/1
ho provato a stamparmi pezzo per pezzo per vedere se c'era qualche problema intermedio e fino a quando non stampo i valori di dalCal.DATE, dalCal.MOUNTH e dalCal.YEAR mi da tutti i valori giusti....
Non so dove sbattere la testa.... qualcuno mi pu spiegare dove sbaglio? PLZ

P.S.: se provo stampare la variabile calendar passandogli come data 15/03/2007 il risultato :
.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,len ient=true,zone=java.util.SimpleTimeZone[id=Europe/Berlin,offset=3600000,dstSavings=3600000,useDaylig ht=true,startYear=0,startMode=2,startMonth=2,start Day=-1,startDayOfWeek=1,startTime=3600000,startTimeMode =2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,Y EAR=2007,MONTH=3,WEEK_OF_YEAR=12,WEEK_OF_MONTH=3,D AY_OF_MONTH=15,DAY_OF_YEAR=78,DAY_OF_WEEK=5,DAY_OF _WEEK_IN_MONTH=3,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MI NUTE=53,SECOND=2,MILLISECOND=484,ZONE_OFFSET=36000 00,DST_OFFSET=0]

e non mi sembra sbagliato...... :dh:
Ciauz a tutti e grazie dell'aiuto che mi darete

Filippo1980
19-03-2004, 14:08
Rileggendo il mio post ho notato che non molto chiaro quello che voglio fare ma visto che dovrei scrivere un post kilometrico per spiegarlo preferisco editarlo aggiungendo questa semplice pagina JSP:

[JSP PAGE]
<%@ page contentType="text/html;charset=windows-1252"%>
<%@ page import="java.util.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.text.*"%>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1252">
<TITLE>
Hello World
</TITLE>
</HEAD>
<BODY>
<%
String dal=request.getParameter("dal");
%>
<form onsubmit="form.jsp">
<table>
<tr>
<td>Dal:
</td>
<td><input type="text" name="dal">
</td>
</tr>
<tr>
<td><input type="submit" value="Invia">
</td>
</tr>
</form>
<%
if (dal!=null)
{
%>
<tr><td><%="variabile dal= "+dal%></td></tr>
<%
//-- divido la variabile che gli passo nella form in giorno, mese e anno
int ggDa=Integer.valueOf(dal.substring(0,2)).intValue( );
int mmDa=Integer.valueOf(dal.substring(3,5)).intValue( );
int aaDa=Integer.valueOf(dal.substring(6,10)).intValue ();

java.util.Calendar CalendarDate = java.util.Calendar.getInstance();//instanzio la variabile calendar

//-- setto la variabile calendar con i parametri della form
CalendarDate.set(CalendarDate.DATE,ggDa);//setto il giorno con la variabile giorno che gli passo nella form
CalendarDate.set(CalendarDate.MONTH,mmDa);//setto l'anno con la variabile anno che gli passo nella form
CalendarDate.set(CalendarDate.YEAR,aaDa);//setto il giorno con la variabile giorno che gli passo nella form

//-- aggiungo alla data settata un giorno
CalendarDate.add(CalendarDate.DATE,+1);

//-- setto la variabile iniziale con la nuova data
dal=String.valueOf((CalendarDate.DATE)).toString() +"/"+String.valueOf(CalendarDate.MONTH).toString()+"/"+String.valueOf(CalendarDate.YEAR).toString();
%>
<tr><td>Stampo tutte le variabili ottenute;</td></tr>

<tr><td><%="i valori della variabile dal trasformati in numeri: anno:"+aaDa+" mese:"+mmDa+" giorno:"+ggDa%></td></tr>
<tr><td><%="valore della variabile calendar="+datdat%></td></tr>
<tr><td><%="giorno "+datdat.DAY_OF_MONTH%></td></tr>
<tr><td><%="mese "+datdat.MONTH%></td></tr>
<tr><td><%="anno "+datdat.YEAR%></td></tr>
<tr><td><%="risultato finale della stringa dal= "+dal%></td></tr>
<%
}
%>
</table>
</BODY>
</HTML>
[/JSP PAGE]

se eseguite questa pagina noterete che il risultato finale sempre giorno 5 mese 2 anno 1.
Se qualcuno mi vuole spiegare cosa sbaglio...... :confused:
:ciauz: a tutti.

Filippo1980
19-03-2004, 16:12
Ho risolto :D
il problema era nella chiamata delle variabili :D
invece di chamarle direttamente cos: CalendarDate.DATE dovevo fare: CalendarDate.get(CalendarDate.DATE)
e ritorna il risultato giusto.
Se ora qualcuno mi volesse spiegare che cavolo di dati mi dava prima.... ma soprattutto perch.... ne sarei felice :D
Comunque grazie dell'aiuto che NON mi avete dato :biifu: :biifu: :biifu:
:ciauz:

Loading