È possibile ottenere il nome del fuso orario locale mediante:
NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *tzName = [timeZone name];
Il nome sarà qualcosa di simile Australia/Sydney
, o Europe/Zurich
o America/Denver
. Poiché sembra che ti interessi solo il continente, potrebbe essere tutto ciò di cui hai bisogno.
Se avete bisogno di più: ottenere il database ufficiale dei fusi orari al http://www.iana.org/time-zones. Scarica tzdata2013g.tar.gz
(o qualunque sia la versione più recente di tzdataYYYYx.tar.gz
quando stai leggendo questo). C'è un file in tale archivio chiamato zone.tab
che dà una latitudine/longitudine per ogni fuso orario, ad esempio:
CH +4723+00832 Europe/Zurich
Il +4723+00832
indica latitudine = + 47º23" , longitudine = + 8º23" .
Aggiornamento: In alcuni casi (non sono sicuro che), il nome del fuso orario può essere un nome di vecchio stile come US/Pacific
che non è elencato in zone.tab
. Per gestirli, prendi anche il file backward
, che dà traduzioni di nomi più vecchi ai nomi attuali.
La conversione di zone.tab
in qualcosa che l'app può utilizzare dipende da voi. I risultati non saranno neanche lontanamente accurati come i servizi di localizzazione, ma daranno un'idea generale. Ma non è garantito. Fallirà in un paio di situazioni:
L'utente modifica il proprio fuso orario in Impostazioni. La maggior parte degli utenti consente al proprio telefono di impostare automaticamente l'ora e la zona, ma non tutti. Se l'utente cambia il proprio fuso orario, otterrà ciò che vuole invece di ciò che è accurato.
Il dispositivo non è in grado di determinare il fuso orario locale corretto. I problemi di rete potrebbero impedire al telefono di impostare l'ora e la zona in modo accurato. Ad esempio, se l'utente viaggia in aereo e ha problemi di rete quando atterra, il telefono potrebbe comunque mostrare il fuso orario dalla loro posizione di partenza.
fonte
2013-10-04 20:27:05
c'è un modo più semplice per convertire in codice del Paese rispetto all'utilizzo di zone.tab? – Alan
Non che io sappia, ma zone.tab è già molto facile da usare. –