Je souhaite obtenir le fuseau horaire du mobile Android en cliquant sur un bouton.
Avez-vous essayé d'utiliser TimeZone.getDefault()
:
La plupart des applications utiliseront TimeZone.getDefault () qui renvoie un fichier .__ basé sur TimeZone. sur le fuseau horaire où le programme est exécuté.
Réf: http://developer.Android.com/reference/Java/util/TimeZone.html
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());
Sortie:
TimeZone GMT + 09: 30 Timezon id :: Australie/Darwin
Edit: corrigé le cas
Essayez ce code-
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
Il retournera le fuseau horaire sélectionné par l'utilisateur.
J'avais besoin du offset qui incluait non seulement le passage à l'heure d'été mais aussi un numéro. Voici le code que j'ai utilisé dans le cas où quelqu'un cherche un exemple.
Je reçois une réponse de "3.5" (3:30 '), ce à quoi je m'attendrais à Téhéran, en Iran en hiver et "4.5" (4:30') en été.
J'en avais aussi besoin sous forme de chaîne pour pouvoir la poster sur un serveur afin que vous n'ayez pas besoin de la dernière ligne.
pour obtenir le fuseau horaire actuel:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
//Import part : x.0 for double number
double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0;
String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);
La solution la plus simple avec le format de date simple: SimpleDateFormat ("ZZZZZ"):
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
Locale.getDefault());
Date currentLocalTime = calendar.getTime();
DateFormat date = new SimpleDateFormat("ZZZZZ",Locale.getDefault());
String localTime = date.format(currentLocalTime);
System.out.println(localTime+ " TimeZone " );
==> La sortie est: +05: 30
Selon http://developer.Android.com/reference/Android/text/format/Time.html vous devriez utiliser Time.getCurrentTimezone () pour récupérer le fuseau horaire actuel du périphérique.
TimeZone timeZone = TimeZone.getDefault (); timeZone.getID ();
Il va imprimer comme
Asia/Kolkata
Pour les appareils avec API 26 et plus, vous pouvez l'obtenir comme suit:
ZonedDateTime.now().getZone().toString();