En éste, el sexto curso de la serie, nos ocupamos de un concepto que no puede ignorarse cuando una aplicación va más allá de las fronteras de un solo país: los husos horarios.
En cuanto se hace necesario mostrar una fecha o una hora en la zona horaria del usuario, la gestión del tiempo se vuelve rápidamente compleja. Cambios de hora, ciudades de referencia, horario de verano e invierno, formatos ISO 8601 con desfase… todos temas que parecen sencillos a primera vista, pero que requieren un verdadero método para ser manejados correctamente.
En este curso, mejoraremos nuestra clase Stmp para que pueda cargar y utilizar un repositorio completo de zonas horarias, asociar ciudades a sus zonas, calcular desplazamientos entre ciudades y, a continuación, adaptaremos las funciones fundamentales de la clase (build, now, getDate, getTime) para que puedan integrar esta dimensión internacional.
También veremos cómo pueden actualizarse las funciones de conversión ISO 8601 para gestionar explícitamente los desfases horarios, y así producir o interpretar fechas y horas en formatos normalizados que puedan utilizarse en los intercambios entre sistemas.
Más allá de las propias zonas horarias, este curso es también una muy buena ilustración de varias buenas prácticas de diseño: carga diferida de recursos, almacenamiento de datos en caché, gestión de propiedades compartidas en un singleton, evolución progresiva de una API existente y uso de parámetros variádicos para mantener la interfaz flexible y potente.