2010-07-29 2 views
3

Je dois écrire une méthode pour obtenir le jour de la semaine (heure du Pacifique) pour l'heure actuelle. Le code suivant est-il correct?La façon d'obtenir le jour de la semaine, l'heure du Pacifique

static Calendar s_calendar = Calendar.getInstance(Locale.US); 
static { 
    s_calendar.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles")); 
} 

public static int getDayOfWeek() { 
    s_calendar.setTimeInMillis(System.currentTimeMillis()); 
    return s_calendar.get(Calendar.DAY_OF_WEEK); 
} 

Merci.

Répondre

2

utilisation ci-dessous:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/Los_Angeles"), 
    Locale.US); 
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); 
+0

J'ai créé un objet Calendar statique, car je pense qu'il peut être coûteux de le créer à chaque appel de méthode. – user256239

+0

Dépend de votre cas d'utilisation, que l'optimisation de la création du calendrier soit importante ou non. Jetez un oeil à ceci: http://stackoverflow.com/questions/368094/system-currenttimemillis-vs-new-date-vs-calendar-getinstance-gettime –

0

System.currentTimeMillis() renvoie les Millis en UTC. Convertissez-le avant d'appeler get (Calendar.DAY_OF_WEEK)

+0

J'ai fait un test. Je n'ai vu aucun problème sans le convertir. Java doc a spécifié que "setTimeInMillis (long millis): millis - la nouvelle heure en UTC millisecondes de l'époque." http://java.sun.com/javase/6/docs/api/java/util/Calendar.html#setTimeInMillis(long) – user256239

Questions connexes