diferença de fuso horário android é de 1 hora a menos do que o esperado

O que eu preciso é de uma diferença horária entre o fuso horário específico ("Rússia / Moscou") e a hora local do usuário; a diferença deve ser em horas.

Tenho o problema de que a diferença de fuso horário às vezes é falsa calculada. Calculo a diferença (em horas) entre o deslocamento local para UTC do dispositivo Android e o deslocamento remoto para UTC. Para a maioria dos usuários, tudo bem. Mas muitos usuários estão reclamando do problema. Não consigo reproduzi-lo no meu telefone ou emuladores. A diferença de tempo exibida "incorreta" é de 1 hora a menos. Em Moscou são 15:00, na Europa 12:00. Mas o usuário vê o deslocamento de 2 horas aqui é o meu código.

 String tz="Europe/Moscow"
 Calendar mCalendar = new GregorianCalendar();
 mCalendar.setTimeZone( TimeZone.getTimeZone(tz));
 TimeZone mTimeZone = mCalendar.getTimeZone();  
 int remote = mTimeZone.getRawOffset()/1000/60/60;

 Calendar mCalendar2 = new GregorianCalendar();
 TimeZone mTimeZone2 = mCalendar2.getTimeZone();  
 int local = mTimeZone2.getRawOffset()/1000/60/60;

 return local - remote;

questionAnswers(1)

yourAnswerToTheQuestion