web-dev-qa-db-fra.com

Comment obtenir TimeZone depuis un mobile Android?

Je souhaite obtenir le fuseau horaire du mobile Android en cliquant sur un bouton.

112
asha v

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

162
MasterCassim
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

111
Zulfiqar

Edit: corrigé le cas

TimeZone.getDefault()

17
Jigar Joshi

Essayez ce code-

Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();

Il retournera le fuseau horaire sélectionné par l'utilisateur.

12
anujprashar

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);
9

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 

3
Jaydeep purohit

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.

2
Thom

TimeZone timeZone = TimeZone.getDefault (); timeZone.getID ();

Il va imprimer comme

Asia/Kolkata
2
Raja Jawahar

Pour les appareils avec API 26 et plus, vous pouvez l'obtenir comme suit:

ZonedDateTime.now().getZone().toString();
0
taurelas