2011-03-28 7 views
0

J'essaie d'obtenir un objet de calendrier avec l'heure spécifique demain dans un fuseau horaire spécifique (pas le fuseau horaire dans lequel se trouve l'appareil). Dans l'exemple ci-dessous je veux obtenir 12h15 dans le fuseau horaire central demain peu importe où dans le monde l'appareil est situé.Temps spécifique dans une zone spécifique

Première question, est-ce la meilleure façon de faire cela? Deuxième question, comment dois-je faire face à l'heure d'été?

Je ne traite que des 4 fuseaux horaires du continent américain et je peux supposer que je veux ajuster pour l'heure d'été.

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"), Locale.getDefault()); 
calendar.add(Calendar.DATE, 1); 
calendar.set(Calendar.HOUR_OF_DAY, 0); 
calendar.add(Calendar.HOUR_OF_DAY, 6); //Central time zone 
calendar.set(Calendar.MINUTE, 0); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.MILLISECOND, 0); 
calendar.add(Calendar.MINUTE, 15); 

Répondre

3
Calendar calendar = 
    Calendar.getInstance(
     TimeZone.getTimeZone("America/Chicago"), 
     Locale.getDefault() 
    ); 

calendar.set(Calendar.HOUR_OF_DAY, 0); 
calendar.set(Calendar.MINUTE, 15); 
calendar.set(Calendar.SECOND, 0); 
calendar.set(Calendar.MILLISECOND, 0); 

calendar.add(Calendar.DAY_OF_MONTH, 1); 

La meilleure façon de le faire est d'utiliser JodaTime, mais je vois que vous avez mis tag android, si le calendrier est probablement votre seule option.

Pour une deuxième question. java.util.Calendar gère la conversion de la lumière du jour en heure standard.

+0

Joda-Time dans Android ne court. –

0

En Joda temps ...

DateTimeZone timeZone = DateTimeZone.forID("America/Chicago"); 
DateTime tomorrowAfterMidnight = DateTime.now(timeZone).plusDays(1).withTimeAtStartOfDay().plusMinutes(15); 
Questions connexes