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.Datees independiente de la zona horaria. Cuando imprime,cal_Twoaunque laCalendarinstancia tiene su zona horaria configuradaUTC,cal_Two.getTime()devolvería unaDateinstancia 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
GMTlugar deUTC. Se refieren a la misma zona horaria, pero el nombreGMTes más común y podría funcionar.fuente