Estoy realmente confundido con el resultado que obtengo con la Calendar.getInstance(TimeZone.getTimeZone("UTC"))
llamada al método, está devolviendo la hora IST.
Aquí está el código que usé
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
y la respuesta que obtuve es:
Sat Jan 25 15:44:18 IST 2014
Así que intenté cambiar la zona horaria predeterminada a UTC y luego verifiqué, entonces está funcionando bien
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
TimeZone tz = TimeZone.getDefault() ;
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
Calendar cal_Three = Calendar.getInstance();
System.out.println(cal_Three.getTime());
TimeZone.setDefault(tz);
Resultado:
Sat Jan 25 16:09:11 IST 2014
Sat Jan 25 10:39:11 UTC 2014
¿Me estoy perdiendo de algo?
java.util.Date
es independiente de la zona horaria. Cuando imprime,cal_Two
aunque laCalendar
instancia tiene su zona horaria configuradaUTC
,cal_Two.getTime()
devolvería unaDate
instancia que no tiene una zona horaria (y siempre está en la zona horaria predeterminada)Salida:
Desde el javadoc de
TimeZone.setDefault()
Por lo tanto, si mueve su
setDefault()
antescal_Two
, obtendría el resultado correcto.Salida:
fuente
esta trabajando para mi
fuente
Definitivamente te falta una pequeña cosa y es que no estás estableciendo un valor predeterminado:
Entonces el código se vería así:
Explicación : Si desea cambiar la zona horaria, establezca la zona horaria predeterminada utilizando
TimeZone.setDefault()
fuente
fuente
Intente usar en
GMT
lugar deUTC
. Se refieren a la misma zona horaria, pero el nombreGMT
es más común y podría funcionar.fuente