2011-05-19 13 views
23

Los carteles here dicen que la fecha siempre está en hora UTC. Sin embargo, si creo una Fecha(), creo un Calendario y establezco la hora del calendario con la fecha, la hora sigue siendo mi hora local (y no estoy en hora UTC. He probado esto imprimiendo la fecha del calendario en un bucle, restando una hora por ciclo. Son las 11 p.m. el 19 de mayo aquí, y se necesitan 24 loops antes de que la fecha cambie al 18 de mayo. Actualmente es 1 p.m. UTC, así que si el calendario se estableció correctamente, solo tomaría 14 bucles.¿Cómo puedo configurar un calendario con hora UTC?

Date date = new Date(); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTime(date); 

    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd"); 

    int index = 0; 
    for(; index > -30; index--) 
    { 
     System.out.println(index); 
     System.out.println(dateFormatter.format(calendar.getTime())); 
     System.out.println(); 
     calendar.add(Calendar.HOUR, -1); 
    } 
+2

posibilidad de duplicar: http://stackoverflow.com/q/2403109/668970 – developer

+1

no creo que es una víctima. Completamente diferente API. –

Respuesta

69

java.util.Calendar tiene un método de fábrica estática que tiene una zona horaria.

Calendar.getInstance(java.util.TimeZone)

Así que usted puede decir:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 
+0

Por si acaso, compruebe si es el primero: TimeZone.getAvailableIDs(); – ssedano

+0

@ssedano ¿Por qué? Solo lo estamos configurando para UTC. –

+1

Parece que la configuración de la zona horaria en el calendario no afecta al objeto SimpleDateFormat (lo cual no es sorprendente ya que opera en el objeto Date). Tuve que usar 'SimpleDateFormat.setTimeZone()' para que imprimiera la fecha interpretada en UTC. –

Cuestiones relacionadas