Estaba yo ahora cambiando la hora en varios foros en que lo tengo que hacer manualmente (no reconocen el cambio según las opciones de usuario (que van desde el panel de sus webs, como la disponibilidad de JS en el navegador, hasta…)) y me he acordado de esta web y este hilo.
Diréis, ¿y por qué me he acordado?
Porque una de las cosas que más asco me da de la forma en la que muestran la hora, coja la configuración de usuario automáticamente o manualmente, es que cambian la hora de todos los mensajes respecto de esa configuración. Es decir, si yo ayer publique un mensaje en X web a las 13:25, hoy aparece, con la suma del horario de verano, como que lo publiqué a las 14:25. Lo cual quita totalmente la fidelidad porque a esa hora de ese día, igual, ni estaba en casa. Algo parecido a lo que hace Windows (no sé si en versiones recientes lo habrán cambiado), que cuando cambia la hora, ahora en Marzo, dice que ayer creaste un archivo una hora después de cuando lo hiciste.
Bueno, pero que me enrollo.
En este sentido me es una grata sorpresa que esta web guarda la hora en formato completo y la fecha y hora son persistentes al momento de su publicación, lo que da fidelidad. Eso sí, la conversión se realiza en servidor. Y de hecho, me parece lo mejor, porque si empezamos a tomar opciones de usuario o datos provistos por el navegador, ya empiezan las cosas a salir mal, porque lo que se cuenta entonces es la diferencia de la zona horaria más la DST. De la misma manera que hay una función en javascript para obtener el timezoneoffset, no sé por qué no la hay en Date() para sólo la timezone del sistema.
Paradojas de la vida, mi navegador al menos, guarda en el historial en GMT (epoch) y convierte a la hora real del momento de la visita, es decir, si era GMT+diferencia horaria, pues esa, y si es GMT+diferencia+DST, pues a esa.
No entiendo porque no pueden hacer como los clientes de correo y que muestren la hora en función del momento en el que se produjo el evento. Y cito los clientes de correo porque la hora en el código fuente de la web, si no me equivoco, está codificada basándose en los RFCs de los correos.
¿Y por qué toda esta parrafada?
Porque si se hace algo la fecha no debe ser generada dinámicamente con JavaScript porque perdería fidelidad para mensajes pasados. Y si se toma por opciones en el perfil de usuario, que esa opción no tenga en cuenta el DST (o sea, no se actualice en función de lo que diga el navegador, porque a la zona horaria devuelta suma el DST, y el DST, o la diferencia horaria total, sería mejor decir, ya está en la hora que devuelve el servidor del mensaje original), sólo la zona y, en función de la fecha del año, la web añada la diferencia DST. Es mejor que no se guarde en el servidor la hora UTC/GMT, porque se vuelve al punto de partida de la ausencia de fidelidad horaria. Lo que da fidelidad es el cómo se guarda ahora la fecha.
Los boca de pez se quedarían fuera, pero creo que es un precio justo por la fidelidad de tiempo. Si acaso, poner alguna opción por cookie en el que el usuario anónimo provea su zona horaria. Y quien no quiera más que cookies de sesión, a lo mucho, pues no le tocará otra que estar metiendo la diferencia horaria continuamente. Pero creo que la mayoría de boca de pez, y en general de los usuarios, es que estamos en +1, así que podría encargarse el servidor de hacerlo como ahora. Que sólo se haga un cambio con los usuarios registrados que lo hayan cambiado como decía antes. Y sólo la zona horaria, sin tener en cuenta el DST. La diferencia DST sólo debería de ser añadida si el mensaje original fue publicado en meses de verano (suponiendo que la zona horaria provista también tiene DST). ¿Y esto no es lo mismo que hacerlo automáticamente?, no, porque así sólo se aplica el cambio a los mensajes que necesitaría un ajuste DST, pero no a los de invierno, como hacen mal la mayoría de foros ahí fuera, si no todos. (Creo que me he repetido con esto último XD)
Sea como sea, establecer automáticamente la zona horaria del usuario, no, porque es imposible de saber con lo que devuelve el navegador y es que no se debe aplicar la diferencia horaria a todos los mensajes.
Todo sea por la fidelidad de tiempo, y tal cual está ahora, un 10 a BandaAncha. Espero que encuentres la mejor forma Josh.