Discrepancia de zona horaria: la comprobación de coherencia más barata de la web

De todas las comprobaciones de coherencia que puede ejecutar un sitio web, comparar las zonas horarias es la más barata. Necesita una sola llamada de JavaScript y una consulta que el servidor ya hace. También es una de las razones más habituales por las que una cuenta recibe una segunda mirada.
Dos zonas horarias, dos fuentes
La primera zona horaria procede de tu dirección. El servidor sabe de dónde vino la petición y usa una base de datos de geolocalización para asociar esa dirección a una región y a su zona horaria. Para una conexión desde París, es Europe/Paris. Esto ocurre en el servidor; tu navegador no tiene voz ni voto.
La segunda procede de tu navegador. Intl.DateTimeFormat().resolvedOptions().timeZone devuelve el nombre IANA con el que está configurado el sistema operativo, y new Date().getTimezoneOffset() devuelve el desfase actual respecto a UTC. Si la máquina está configurada en Berlín, la página ve Europe/Berlin, sin importar de dónde llegaron los paquetes.
Por qué no coinciden
Las razones legítimas son los viajes, un portátil al que nunca se le cambió la región del reloj y las redes corporativas que salen por otro país. La razón que preocupa a los sitios son los proxies: un navegador en un país que usa una dirección de otro, sin que nadie haya pensado en el reloj. París y Berlín comparten desfase, así que el desfase por sí solo coincidiría; el nombre IANA no. Las comprobaciones que comparan nombres lo detectan, y por eso un diagnóstico muestra tanto el nombre del navegador como el de la dirección en lugar de un desfase numérico.
Qué significa una discrepancia
Por sí sola, nada concluyente. Mucha gente real la provoca. Pero es una señal barata, y los sistemas de puntuación suman señales baratas. Una discrepancia más una dirección clasificada como hosting más un candidato WebRTC en un tercer lugar es una historia distinta de una discrepancia aislada.
Cómo hacer que coincidan
Hay dos formas de obtener un resultado coherente. Ajustar la zona horaria del sistema operativo a la de la dirección, lo cual funciona pero resulta torpe cuando varios perfiles usan direcciones distintas. O dejar que el perfil del navegador sustituya la zona horaria que comunica, que es lo que hacen los navegadores diseñados para ello: la zona horaria del perfil sigue a la dirección con la que se inicia, de modo que los dos nombres coinciden automáticamente. El segundo enfoque también tiene que cubrir el desfase actual, las transiciones del horario de verano y las cadenas de fecha localizadas, porque un script puede comparar todo eso. Un perfil que informa de Europe/Paris pero da formato a las fechas con un desfase de Berlín solo ha movido la contradicción.
Qué buscar en un informe
Un diagnóstico que muestra «Zona horaria según la IP» y «Zona horaria» lado a lado, y los marca cuando difieren, hace exactamente lo que haría la comprobación de un sitio. Si coinciden, la comprobación se supera. Si no, ya sabes cuál cambiar. En ambos casos, lo útil es la comparación en sí, no una puntuación añadida a ella.


