Gestión de fechas en Libreoffice

Esto lo aprendí de Dates from UNIX timestamps in OpenOffice/LibreOffice.

Los Sistemas Unix guardan las fechas en un entero como la cantidad de segundos transcurridos desde el 1 de Enero de 1970 (incluyendo en algunos casos un segundo entero con la cantidad de microsegundos desde el comienzo de ese segundo para mayor precisión).

Por otro lado, Libreoffice guarda las fechas en un número de coma flotante, donde la parte entera se corresponde con la cantidad de días con respecto al 12 de Diciembre de 1899 y el resto se corresponde con la parte fraccionara del día.

Dado que entre el 12 de Diciembre de 1899 y el 1 de Enero de 1970 existen 25569 días y que cada día tiene 86400 segundos, la fórmula de conversión será (suponiendo que en la celda A1 se encuentra el timestamp de Unix):

 = 25569 + A1/86400

El resultado de esta fórmula puede ser formateado como fecha en Libreoffice para obtener una expresión textual con el orden de día/mes y formato deseado.

Pero queda una salvedad más:
Los timestap de Unix siempre están expresados en formato UTC mientras que las conversiones a fecha utilizadas por los formatos fecha de Libreoffice nunca tienen en cuenta el huso horario local. Por lo que la fecha convertida será mostrada siempre como su valor UTC.

Si por ejemplo se desea mostrar la fecha en horario local para una zona horaria UTC+1 como la zona horaria de invierno en Europa Central, la fórmula anterior deberá coregirse a:

= 25569 + (A1 + 3600) / 86400

Dado que 1 hora = 3600 segundos. Y si se quiere convertir el timestamp a la zona horaria de verano en Europa Central, la fórmula será:

= 25569 + (A1 + 7200) / 86400

Ya que hay que sumar la hora de daylight saving a la hora de diferencia con respecto a UTC,

José Administrator
Apasionado por el software, la electrónica y la fotografía.
follow me

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *