2010-07-15 34 views
7

C'è un modo per ottenere il fuso orario dalle callback ricevutoOttenere Fuso orario in Android

void onLocationChanged(Location location) 

utilizzando le informazioni di tempo che può essere ottenuto dal parametro di posizione

long Time = location.getTime(); 

O se ci è un altro modo per favore fornire informazioni!

+0

Si dovrebbe elaborare il tuo problema, perché ovviamente non ci sono soluzione chiara. – Doomsday

risposta

3

È possibile utilizzare il servizio web fornito dal geonames.org. Fornire latitudine e longitudine per ottenere le informazioni sul fuso orario.

http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2:

{"time":"2010-07-24 18:35","countryName":"Austria","sunset":"2010-07-24 21:02","rawOffset":1,"dstOffset":2,"countryCode":"AT","gmtOffset":1,"lng":10.2,"sunrise":"2010-07-24 05:48","timezoneId":"Europe/Vienna","lat":47.01} 
+0

Potrebbe funzionare, ma voglio qualcosa che non dipenda da una connessione Internet. Forse implementando lo stesso algoritmo per la mia applicazione. – rantravee

+0

Ciò è possibile, ma sarà necessario distribuire il database di paesi, località e fusi orari con la propria applicazione. Si noti inoltre che le informazioni sull'ora legale possono cambiare entro 2 settimane. – CrazyCoder

2

È possibile utilizzare java.util.TimeZone per ottenere informazioni sul fuso orario corrente chiamando TimeZone.getDefault(), come:

java.util.TimeZone tz = java.util.TimeZone.getDefault(); 
Toast.makeText(context, tz.getDisplayName(), Toast.LENGTH_LONG).show(); 
+1

Corretto ma ciò restituisce il fuso orario del telefono che potrebbe essere errato o impreciso a causa del fatto che l'utente sta viaggiando – rantravee

+1

OK, ho frainteso la tua intenzione allora. Dal momento che i tempi di localizzazione sono sempre UTC, non credo ci sia un meccanismo in atto per supportare questo. Ciò richiederebbe una sorta di geocodifica per il mapping del fuso orario, che esiste in alcuni dispositivi GPS. Forse una funzione futura per Android ... – Thorstenvv

+0

Penso che Android suggerirà automaticamente di cambiare il fuso orario predefinito durante il roaming in un altro paese. –

0
TimeZone tz = TimeZone.getDefault(); 
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " + tz.getID()); 

OutPut

TimeZone GMT+09:30 Timezon id :: Australia/Darwin