Obtenga el país de un determinado huso horario de Java
Tengo un objeto de TimeZone java, por ejemplo America/Denver
. En teoría, la base de datos IANA lista un código de país para ese TimeZone, a saber US
En java o Android, ¿cómo puedo obtener el país para un objeto TimeZone especificado?
- Cómo convertir el tiempo en AAAA-MM-DDTHH: mm: ss.SSSZ formato a la zona horaria por defecto?
- Android AlarmManager y DST / Timezone / Cambio de hora?
- Obtener la zona horaria local del dispositivo
- Conversión de las fechas UTC a otras zonas horarias
- Android cómo configurar la zona horaria a través de la aplicación
ACTUALIZACIÓN: Tenga en cuenta que no estoy hablando de asignar GMT+0700
a un país específico. Obviamente, puede haber varios países que se asignan a un solo offset bruto. Estoy hablando de la asignación de un código horario específico de https://en.wikipedia.org/wiki/Zone.tab a su código de país singular asociado.
- Android cómo obtener diferencia de tiempo entre dos zonas horarias en Android?
- ¿Cuáles son algunos ejemplos de valores devueltos por TimeZone.getAvailableIDs ()?
- Jodatime cómo saber si el horario de verano está en
- Fechas horarias de la fecha de Android driving me nuts
- ¿Cómo obtener la compensación horaria en GMT (como GMT + 7: 00) desde el dispositivo Android?
- TimeZone.getTimeZone ("CST") devuelve GMT
- Cómo manejar la diferencia de zona horaria entre el servidor y la aplicación nativa de Android?
- Problema de zona horaria en Android
Para mapear entre países y zonas horarias usé la biblioteca ICU. Utilizando el método com.ibm.icu.util.TimeZone.getAvailableID (countryCode), logré mapear zonas horarias a códigos de país.
public static Map<String, String> mapTimezonesToCountries() { Map<String, String> timezoneToCountry = new HashMap<>(); String[] locales = Locale.getISOCountries(); for (String countryCode : locales) { for (String id : com.ibm.icu.util.TimeZone.getAvailableIDs(countryCode)) { // Add timezone to result map timezoneToCountry.put(id, countryCode); } } return timezoneToCountry; }
No puedes, no hay una relación 1: 1 de TimeZone a Country.
Por ejemplo, también hay la zona horaria "UTC"
El enlace que has dado a zone.tab es en realidad el origen de los datos que estás buscando. Por supuesto, usted desearía utilizar uno que sea autoritario , algo que la copia en Wikipedia.
La base de datos IANA / Olson se implementa en Java con la biblioteca JodaTime . Pero no creo que expongan zone.tab a través de ninguna clase. Al menos no pude encontrarlo. Actualiza por favor si soy incorrecto en esto.
Siempre puede importar el archivo usted mismo y utilizarlo según sea necesario.
ACTUALIZAR
No sé nada sobre Android, pero he encontrado algo que podría tener sentido para usted. Parece que hay una función que expone los datos zone.tab en libcore.icu.TimeZoneNames.forLocale (locale)
Busqué, pero no pude encontrar ninguna documentación de referencia sobre esto.
- BroadcastReceiver en android.net.conn.CONNECTIVITY_CHANGE llamado varias veces
- Array límites en java y .length