Estou realmente confuso com o resultado que estou obtendo com a Calendar.getInstance(TimeZone.getTimeZone("UTC"))
chamada de método, é o tempo de retorno IST.
Aqui está o código que usei
Calendar cal_Two = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
System.out.println(cal_Two.getTime());
e a resposta que recebi foi:
Sat Jan 25 15:44:18 IST 2014
Tentei mudar o fuso horário padrão para UTC e depois verifiquei, está funcionando bem
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
Estou faltando alguma coisa aqui?
java.util.Date
é independente do fuso horário. Quando você imprime,cal_Two
embora aCalendar
instância tenha seu fuso horário definido comoUTC
,cal_Two.getTime()
retornaria umaDate
instância que não tem um fuso horário (e está sempre no fuso horário padrão)Resultado:
Do Javadoc de
TimeZone.setDefault()
Portanto, movendo seu
setDefault()
antescal_Two
é instanciado você obteria o resultado correto.Resultado:
fonte
está trabalhando para mim
fonte
Definitivamente, você está perdendo uma pequena coisa: não está definindo um valor padrão:
Portanto, o código ficaria assim:
Explicação : Se você deseja alterar o fuso horário, defina o fuso horário padrão usando
TimeZone.setDefault()
fonte
fonte
Tente usar em
GMT
vez deUTC
. Eles se referem ao mesmo fuso horário, mas o nomeGMT
é mais comum e pode funcionar.fonte