Mouais 22h00 gmt
0h gmt+2
Ca te donne -22, pas super.
Les zones c'est pas seulement des décalages, c'est aussi des heures d'été et d'hiver en fonction des mois. C'est nous par exemple c'est -2h l'hiver et -1h l'été.
Ton vilain calcul moche te donne au mieux l'offset du moment, pas la zone, pour ça tu peux faire :
TimeZone tz = Calendar.getInstance().getTimeZone();
Ensuite si tu veux l'offset tu as des méthodes pour le récupérer dans TimeZone.