Por una cuestión de mirarse siempre el ombligo, hemos usado desde siempre la zona horaria de Europa Occidental (la que toca a Balears y toda la península). Está mal desde el principio, hay mucha gente que visita Menéame que no es de la misma zona horaria.

Pero era aún peor, en cada cambio de hora de verano-invierno se generaban multitud de problemas –en la fisgona, orden de los votos y noticia, etc.– una hora antes y una hora después de cada cambio.

Aunque lo sufrimos varias veces en los casi tres años, no podíamos encontrar una solución “buena”. Hoy me quedé aposta y preparado para lograr entender el problema. Así me dí cuenta que son los conversores del tipo TIMESTAMP los que fallan. Me bastó con una verficación:

select count(*) from votes where vote_date > now();

Así me salieron multitud de votos que estaban en el “futuro”, lo mismo pasaba con enlaces o comentarios, a pesar que lo único que se hace al crear la fila es insertar con el “now()”.

Visto que era un problema que no podíamos resolver de forma lógica en el programa del Menéame a menos que dejemos de usar el tipo TIMESTAMP, hemos optado por poner el servidor en la hora UTC –se solucionaron los problemas restantes inmediatamente– para que no vuelva a ocurrir. Ya modifiqué las tres funciones que muestran fechas para que indiquen la zona horaria del servidor –algo que también debería haber estado desde el principio.

Disculpas por las molestias, sobre todo a los que han sufrido las distorsiones temporales de la fisgona más de una vez.

Nota: las horas en la fisgona siempre se han mostrado en la zona local del ordenador cliente. Eso no ha cambiado.