
Originariamente inviata da
linux_r
Questo è il codice, funziona tutto solo che l'appuntamento risulta un ora in meno, ad esempio se è alle 10:30, risulta alle 9:30. Ho visualizzato anche l'oggetto time, l'ho stampato e stampa le 10:30.
Già, vero ... ma è perchè nell'oggetto Time i millisecondi sono nel fuso orario GMT (in generale i millisecondi dalla "epoch" sono sempre in GMT .... non in un qualche fuso locale, es. italiano).
Comunque si risolve abbastanza facilmente:
codice:
public static void setTimeToCalendar(Calendar calendar, Time time) {
Calendar timeCal = (Calendar) calendar.clone();
timeCal.setTime(time);
calendar.set(Calendar.HOUR, timeCal.get(Calendar.HOUR));
calendar.set(Calendar.MINUTE, timeCal.get(Calendar.MINUTE));
calendar.set(Calendar.SECOND, timeCal.get(Calendar.SECOND));
calendar.set(Calendar.MILLISECOND, timeCal.get(Calendar.MILLISECOND));
}
Poi nel tuo caso:
codice:
Calendar calendario = Calendar.getInstance(Locale.ITALY);
setTimeToCalendar(calendario, appuntamento);
// qui calendario ha l'ora dell'appuntamento