2016-08-21 2 views
0

J'ai besoin d'obtenir l'heure locale dans mon application. J'utilise classe de calendrier à cet effet.Obtenez le fuseau horaire par défaut dans android

code:

Calendar calendar = Calendar.getInstance(); 

calendar.get(Calendar.HOUR_OF_DAY) montre les heures selon GMT.

J'ai vérifié que TimeZone.getDefault().getDisplayName() montre GMT (ce qui est incorrect) comme fuseau horaire par défaut mais java.util.TimeZone.getDefault().getDisplayName() indique le fuseau horaire correct. Egalement calendar.getTime().toString() indique l'heure correcte.

Je ne comprends pas pourquoi il y a cet écart entre android.icu.util.TimeZone et java.util.TimeZone

Edit:

J'ai récemment découvert qu'il ya deux API Calendrier - java.util.Calendar (ajouté au niveau de l'API 1) et android.icu.util.Calendar (ajouté au niveau de l'API 24).

j'avais été en utilisant android.icu.util.Calendar mais testé sur Android M. Alors maintenant, je vais utiliser l'API java.util.Calendar

+0

http://stackoverflow.com/questions/5369682/get-current-time-and-date-on-android – Nabin

+0

@NabinKhadka Je reçois du temps pour fuseau horaire GMT. Mais mon exigence est d'avoir du temps pour le fuseau horaire local. – arora

+0

vous pouvez utiliser TimeZone.getDefault() il vous donne le fuseau horaire par défaut et l'instance de calendrier par défaut choisit le fuseau horaire par défaut – Aditi

Répondre

0

Avez-vous essayé le ci-dessous:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+05:30")); //If you are seeking local time of India 

Ou

date.setTimeZone(TimeZone.getTimeZone("GMT+05:30")); 

String localTime = date.format(currentLocalTime); //To get current local time 
+1

J'ai besoin que le fuseau horaire soit variable en fonction de l'emplacement de l'utilisateur. La documentation Android suggère d'utiliser TimeZone.getDefault() à cette fin, mais cela ne fonctionne pas dans mon cas. – arora

+0

Vous pouvez essayer long currentTime = new Date(). GetTime(); Il donnera l'heure de l'appareil. Par conséquent, l'heure de l'utilisateur dans n'importe quelle zone il est – deosha

+0

Je suis complètement incapable d'obtenir le fuseau horaire local sur n'importe quel appareil je me connecte au studio Androids et utilise TimeZone.getDefault(). Je reçois toujours l'heure GMT avec gmt Offset étant 0. Quelqu'un sait-il comment obtenir le fuseau horaire réel dans l'API 22 et au-dessus? – KuriaNdungu