java - que - husos horarios
Creación de una lista fácil de usar de zonas horarias para preferencias de usuario (3)
Creo que está asumiendo que "fácil de usar" significa mostrarles una pequeña lista. El hecho es que todas esas zonas horarias son utilizadas por alguien, en algún lugar. Pueden parecerte iguales, pero a menudo tienen un comportamiento ligeramente diferente. Vivo en Saskatchewan y tenemos nuestra propia versión de CST. El nombre largo es solo "Hora estándar central", pero no usamos horario de verano, por lo que durante la mitad del año no estamos alineados con el CST real. Incluso hay una pequeña área de Saskatchewan que tiene una diferencia de 15 minutos en el tiempo. Aunque parezcan iguales, son diferentes y creo que debería permitir que los usuarios seleccionen de la lista completa.
Intentar acortar inteligentemente la lista puede ser comparable a no enumerar todos los códigos de moneda posibles cuando se permite que un usuario seleccione una moneda preferida. Sí, puede que solo haya un puñado de personas que usan ciertas. Claro, puede haber algunos con las mismas tasas de conversión actualmente. Al final, deje que el usuario decida qué les importa.
Una solución para mostrar listas grandes o datos potencialmente no importantes con solo unos pocos elementos de interés real: primero determine los que se usan comúnmente y luego sepárelos en la parte superior de la lista. Esto se puede ver en varios sitios web para seleccionar País, por ejemplo:
Canada
United States
------------------
Argentina
Australia
...
Esta estrategia también se usa a menudo para mi ejemplo anterior de moneda. Podría verse algo así para las zonas horarias (si su base de usuarios principal está en América del Norte):
EST
CST
MST
PST
------------------
Hawaii
Saskatchewan
...
Sin embargo, recuerde que esto requerirá que usted manualmente, pre-determine cuáles son las zonas horarias comunes .
Siento que el mejor enfoque es simplemente listar todas las zonas horarias, ordenadas por compensación porque la mayoría de las personas sabrán dónde encontrar la zona en función de la compensación. Por ejemplo, siempre busco primero "-6: 00", no Saskatchewan. ¡Espero que esto ayude!
A continuación se muestra un fragmento de la lista de zonas horarias devueltas desde java (he impreso el desplazamiento de zona horaria, el ID de zona horaria y el nombre largo, usando JodaTime).
(GMT-10:00) HST, Hawaii Standard Time
(GMT-10:00) Pacific/Apia, -10:00
(GMT-10:00) Pacific/Fakaofo, Tokelau Time
(GMT-10:00) Pacific/Honolulu, Hawaii Standard Time
(GMT-10:00) Pacific/Johnston, Hawaii Standard Time
¿Cuál es la diferencia entre HST , Pacific / Honolulu y Pacific / Johnston , por ejemplo? Todos parecen usar el horario estándar de Hawaii , ¿por qué hay 3 entradas en la base de datos?
- Mi objetivo final es crear una lista de zonas horarias para las preferencias del usuario en una aplicación web.
Si uso todas las zonas horarias de la base de datos tz, la lista es larga y parece tener duplicados efectivos (ejemplo anterior). Simplemente podría enumerar nombres de formato largo únicos, como "Hora estándar de Hawaii", pero luego debo decidir cómo asignarlos a cualquiera de las zonas horarias que usan el mismo nombre largo.
¿Qué hacen otras personas en este caso? ¿Cómo creas una buena lista fácil de usar de zonas horarias y las asignas a su correspondiente Zona Horaria de Java?
Los datos de CLDR contienen una lista de zonas horarias "importantes" y probablemente se pueden usar para seleccionar las que se mostrarán. (Recuerdo algo más, pero this es lo mejor que puedo encontrar ahora)
Existirán múltiples identificaciones de zona horaria para el mismo lugar si los datos eran diferentes en el pasado o si el lugar ha sido renombrado (la característica de alias en los datos de zona horaria). Eliminar el archivo hacia atrás al compilar los datos de la zona horaria eliminaría la mayoría de los alias.
Si la zona horaria usa o no el horario de verano es probablemente la diferencia más común.