|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
java: Problema classe CALENDAR
Salve;
sto utilizzando la classe CALENDAR è ho un problema; utilizzo il seguente codice per settare il giorno della settimana nel mio calendario: myCalendar.set (Calendar.DAY_OF_WEEK, d); "d" e il giorno della settimana che ha un valore intero compreso tra 1 e 7. Il risultato di questa linea di codice è piuttosto ambiguo infatti il valore che la classe CALENDAR attribuisce al giorno della settimana non è mai lo stesso. Qualcuno di voi sa spiegarmi a cosa è dovuto e come posso risolvere tale problema??? Grazie a tutti. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
cosa intendi che il valore non è mai lo stesso?
i giorni della settimana sono definiti come costanti nella classe Calendar (Calendar.MONDAY, Calendar.TUESDAY ecc.ecc ) |
|
|
|
|
|
#3 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
intendo che se scrivo la seguente riga di codice:
System.out.println(myCalendar.get(Calendar.DAY_OF_WEEK)); il valore d'uscita nn corrisponde con quello da me impostato ovvero "d" |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
posta il frammento di codice, se io eseguo questo:
Calendar cal = Calendar.getInstance(); System.out.println(cal.get(Calendar.DAY_OF_WEEK)); cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY); System.out.println(cal.get(Calendar.DAY_OF_WEEK)); i risultati sono quelli attesi (ovvero 4 e 3 in output) |
|
|
|
|
|
#5 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
prima recupero il numero del giorno da una stringa ( e lo salvo in "day_week") e con il codice che segue la converto in intero
int d=0; String[] d_w = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }; for (int i=0; i<=d_w.length;i++) { if (d_w[i].equals (day_week)) { d=i+1; break; } } poi eseguo questo codice per salvarlo nel mio calendario myCalendar.set (Calendar.DAY_OF_WEEK, d); System.out.println(myCalendar.get(Calendar.DAY_OF_WEEK)); il risultato pero non è quello atteso |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
String[] d_w = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
int[] decodes = {Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY}; for (int i=0; i<=d_w.length;i++) { if (d_w[i].equals (day_week)) { myCalendar.set (Calendar.DAY_OF_WEEK, decodes[i]); break; } } |
|
|
|
|
|
#7 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
Purtroppo il problema rimane lo stesso anche con il tuo codice.....comunque puo anche essere colpa del fatto che son stanco. Domani riguardo meglio...
Se hai qualche altro consiglio da darmi te ne sarò grato... grazie cmq il tuo aiuto è stato già molto utile |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
( Sunday .. Monday ... happy days ... )Poi hai fatto il test i<=d_w.length per minore/uguale e non va bene (vai fuori dall'array se non trovi il giorno).
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#9 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
strano. la correzione di andbin è corretta, se day_week è diverso da una delle stringhe di d_w si verifica un'eccezione. |
|
|
|
|
|
|
#10 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
....
Scusa ke intendi con il valore 1 è Calendar.Sunday ?
Vuo dire che i giorni della sett in Calendar sono codificati partendo da Sunday e così via?
|
|
|
|
|
|
#11 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Ma se vuoi puoi fare una cosa semplice: Codice:
String[] giorniStr = { "Mon", "Tue", .... };
int[] giorniVal = { Calendar.MONDAY, Calendar.TUESDAY, .... };
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
|
|
|
|
|
|
#12 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
E' la stessa cosa che mi ha consigliato kingv....ma il problema rimane lo stesso!!!
Ecco il codice: Calendar myCalendar = Calendar.getInstance(); String[] d_w = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" }; int[] decodes = {Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY}; for (int i=0; i<=d_w.length;i++) { if (d_w[i].equals (day_week)) { myCalendar.set (Calendar.DAY_OF_WEEK, decodes[i]); break; } } |
|
|
|
|
|
#13 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Sì, scusa ... m'ero dimenticato Quote:
Io ho provato: Codice:
Calendar myCalendar = Calendar.getInstance();
String day_week = "Sun";
System.out.println (myCalendar.get (Calendar.DAY_OF_WEEK));
String[] d_w = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };
int[] decodes = {Calendar.MONDAY, Calendar.TUESDAY, Calendar.WEDNESDAY, Calendar.THURSDAY, Calendar.FRIDAY, Calendar.SATURDAY, Calendar.SUNDAY};
for (int i=0; i<=d_w.length;i++)
{
if (d_w[i].equals (day_week))
{
myCalendar.set (Calendar.DAY_OF_WEEK, decodes[i]);
break;
}
}
System.out.println (myCalendar.get (Calendar.DAY_OF_WEEK));
5 1 Il 5 è giovedì (THURSDAY) e poi ha impostato SUNDAY.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#14 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
|
|
|
|
|
|
#15 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
ma ti funziona alla fine o no?
|
|
|
|
|
|
#17 |
|
Junior Member
Iscritto dal: Dec 2006
Messaggi: 20
|
NO...non mi funziona!!!!!!!!!
Da quel che ho capito io....Calendar mi lascia fare tutto quel che voglio per non appesantire il sistema con chiamate a getTime, che invece viene chiamato tutte le volte che vado a fare un'altra qualsiasi operazione con il Date con cui ho inizializzato il Calendar. Per cui, provare a settare il giorno della settimana a qualcosa di diverso da quello reale del Date che ho utilizzato o da quello computato effettivamente da Calendar non ha alcun effetto reale nei passaggi successivi che faccio. |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Si può fare anche con una mappa (immutabile):
Codice:
...
Map<String,Integer> days = new HashMap<String,Integer>();
// carico la mappa
days.put("Mon",Calendar.MONDAY);
days.put("Tue",Calendar.TUESDAY);
days.put("Wed",Calendar.WEDNESDAY);
days.put("Thu",Calendar.THURSDAY);
days.put("Fri",Calendar.FRIDAY);
days.put("Sat",Calendar.SATURDAY);
days.put("Sun",Calendar.SUNDAY);
// la rendo costante - facoltativo
days = Collections.unmodifiableMap(days);
// recupero il numero corrispondente alla stringa (1 in questo caso)
int d = days.get( "Sun" );
...
__________________
|Java Base| |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:44.











)
Sì, scusa ... m'ero dimenticato
|








