PDA

View Full Version : [JAVA] ... calendario ???


javacomelava
24-02-2010, 16:49
Salve

Ho il seguente problema:

Per un'applicazione web ho bisogno di un menu a tendina contenente l'elenco degli anni.Scelto l'anno viene visualizzato il menu a tendina relativo ai mesi.
Scelto il mese deve essere visualizzata un'ultimo menu a tendina contenente intervalli dati dalla suddivisione del mese scelto in settimane.
Scelto l'intervallo di giorni,viene visualizzata una tabella che ha per colonne i singoli giorni dell'intervallo:

Anno: .....- 2008 - 2009 - 2010 - ....
Mese: ....-Settembre - Ottobre - Novembre - ....
Intervalli settimanali: 1-4 , 5-11 , 12-18 , 19-25 , 26-31

(N.B.: gli intervalli settimanli sono relativi a ottobre 2009,è solo un esempio per farvi capire)


1.Sono capace di recuperare la lista degli anni e ovviamente dei mesi,ma non riesco a capire come fare a recuperare la lista dei giorni di ogni mese(febbraio non è sempre di 28,per questo devo farlo dinamicamente).

2.Recuperata la lista dei giorni come fare a suddividerli in intervalli settimanali?
E per recuperare il giorno relativo al numero?? (esempio: giorno 11 ottobre --> Lunedi )


Sto dando un'occhiata alla classe GregorianCalendar,ma mi sembra un pò un casino.Mi domandavo se c'era qualcosa di gia bello e fatto.

P.s.: Di calendari a pop-up ne ho trovati migliaia,ma il problema è che, per rispettare i requisiti dell'applicazione,devo utilizzare menu a tendina e tabelle,non un popup per la selezione del giorno.

Saluti

PGI-Bis
24-02-2010, 17:21
Calendar ha una brutta fama ma è una classe deliziosa.

Dato un calendar, getActualMaximum restituisce il massimo valore di un certo campo. Così se io dico:

Calendar c = Calendar.getInstance(2010, 1, 24);
int massimo = c.getActualMaximum(Calendar.DAY_OF_MONTH);

"massimo" è 28 ma se dico:

Calendar c = Calendar.getInstance(2008, 1, 24);
int massimo = c.getActualMaximum(Calendar.DAY_OF_MONTH);

"massimo" è 28.

Dunque con getMinimum (che è sempre 1) e getMaximum ottieni il range dei giorni.

Quanto ai giorni della settimana c'è DAY_OF_WEEK. Che giorno è oggi?

int giorno = c.get(Calendar.DAY_OF_WEEK);

domenica vale 1, sabato 7, per il confronto ci sono le costanti in Calendar.

Il nome del giorno lo ottieni con getDisplayName:

Calendar c = new Calendar(2010, 1, 24);
String giorno = c.getDisplayName(Calendar.DAY_OF_WEEK, Calendar.LONG, Locale.getDefault());

giorno vale "mercoledì"

Per quanto riguarda la suddivisione in settimane se hai l'indice del giorno nella settimana, il numero totale di giorni del mese, sai che domenica vale 1... insomma, è praticamente già fatto.

javacomelava
25-02-2010, 13:45
perfetto,grazie per la risposta,ci sono riuscito,almeno da consolle....ora devo smanettare con JSF,ma tanto il codice quello è :cool: