En informática, una época es una fecha y hora fijas que se utilizan como referencia a partir de las cuales un ordenador mide el tiempo del sistema . La mayoría de los sistemas informáticos determinan el tiempo como un número que representa los segundos que han transcurrido desde una fecha y hora arbitrarias particulares. Por ejemplo, Unix y POSIX miden el tiempo como la cantidad de segundos que han pasado desde el jueves 1 de enero de 1970 a las 00:00:00 UT , un punto en el tiempo conocido como la época de Unix . Los sistemas Windows NT , hasta Windows 11 y Windows Server 2022 incluidos , miden el tiempo como la cantidad de intervalos de 100 nanosegundos que han pasado desde el 1 de enero de 1601 a las 00:00:00 UTC, lo que convierte a ese punto en el tiempo en la época para esos sistemas. [1] Las épocas informáticas casi siempre se especifican como la medianoche del Tiempo Universal en alguna fecha en particular.
Los sistemas de cronometraje por software varían ampliamente en la resolución de la medición del tiempo; algunos sistemas pueden utilizar unidades de tiempo tan grandes como un día, mientras que otros pueden utilizar nanosegundos . Por ejemplo, para una fecha de época de medianoche UTC (00:00) del 1 de enero de 1900 y una unidad de tiempo de un segundo, la hora de la medianoche (24:00) entre el 1 de enero de 1900 y el 2 de enero de 1900 se representa con el número 86400, el número de segundos de un día. Cuando es necesario representar horas anteriores a la época, es habitual utilizar el mismo sistema, pero con números negativos.
Esta representación del tiempo se utiliza principalmente para uso interno. En sistemas en los que la fecha y la hora son importantes en el sentido humano, el software casi siempre convertirá este número interno en una fecha y hora que represente un calendario humano.
Por lo general, las computadoras no almacenan números arbitrariamente grandes. En cambio, a cada número almacenado por una computadora se le asigna una cantidad fija de espacio. Por lo tanto, cuando la cantidad de unidades de tiempo que han transcurrido desde la época de un sistema excede el número más grande que puede caber en el espacio asignado a la representación del tiempo, la representación del tiempo se desborda y pueden ocurrir problemas. Si bien el comportamiento de un sistema después de que se produce un desbordamiento no es necesariamente predecible, en la mayoría de los sistemas el número que representa el tiempo se restablecerá a cero y el sistema informático pensará que el tiempo actual es el tiempo de la época nuevamente.
El problema del año 2000 fue el más conocido de los problemas que se dieron con los sistemas antiguos, que contaban el tiempo según el número de años transcurridos desde el 1 de enero de 1900 y que solo contaban con espacio suficiente para almacenar los números del 0 al 99. Estos sistemas (si no se corrigían de antemano) interpretarían la fecha del 1 de enero de 2000 como el 1 de enero de 1900, lo que daría lugar a errores impredecibles al comienzo del año 2000.
Incluso los sistemas que asignan más espacio de almacenamiento a la representación del tiempo no son inmunes a este tipo de error. Muchos sistemas operativos tipo Unix que registran el tiempo en segundos transcurridos desde la fecha de época del 1 de enero de 1970 y asignan suficiente espacio de almacenamiento para almacenar números tan grandes como 2 147 483 647 experimentarán un problema de desbordamiento el 19 de enero de 2038. Esto se conoce como el problema del año 2038 .
Existen otros problemas más sutiles de cronometraje en informática, como la contabilización de los segundos intercalares , que no se observan con ninguna previsibilidad o regularidad. Además, las aplicaciones que necesitan representar fechas y horas históricas (por ejemplo, representar una fecha anterior al cambio del calendario juliano al calendario gregoriano ) deben utilizar bibliotecas de cronometraje especializadas .
Por último, algunos programas deben mantener la compatibilidad con programas más antiguos que no registran el tiempo en estricta conformidad con los sistemas tradicionales de cronometraje. Por ejemplo, Microsoft Excel observa la fecha ficticia del 29 de febrero de 1900 para mantener la compatibilidad con versiones anteriores de Lotus 1-2-3 . [2] Lotus 1-2-3 observaba la fecha debido a un error; cuando se descubrió el error, ya era demasiado tarde para solucionarlo: "un cambio ahora alteraría las fórmulas que se escribieron para dar cabida a esta anomalía". [3]
Existen al menos seis sistemas de navegación por satélite , todos los cuales funcionan mediante la transmisión de señales horarias . De los dos únicos sistemas de satélite con cobertura global, el GPS calcula su señal horaria a partir de una época, mientras que el GLONASS calcula la hora como una diferencia con respecto a la UTC , con la entrada UTC ajustada para los segundos intercalares . De los otros dos únicos sistemas que apuntan a la cobertura global, Galileo calcula a partir de una época y BeiDou calcula a partir de la UTC sin ajustes para los segundos intercalares. [4] [¿ Necesita actualización? ] El GPS también transmite la diferencia entre la hora UTC y la hora GPS y debe actualizar esta diferencia cada vez que hay un segundo intercalar , lo que requiere que los dispositivos receptores GPS gestionen la actualización correctamente. Por el contrario, los segundos intercalares son transparentes para los usuarios del GLONASS. La complejidad de calcular la UTC a partir de una época se explica por la Agencia Espacial Europea en la documentación de Galileo en "Ecuaciones para corregir la escala de tiempo del sistema a la escala de tiempo de referencia". [5]
La siguiente tabla muestra las fechas de época que utilizan los programas informáticos más populares y otros sistemas relacionados con la informática. En estos sistemas, el tiempo se almacena como la cantidad de una unidad de tiempo determinada (días, segundos, nanosegundos, etc.) que ha transcurrido desde una hora determinada (normalmente la medianoche UTC del comienzo de la fecha dada).
Nota: Cuando los valores de marca de tiempo se almacenan como números enteros de ocho bytes (actualmente el valor predeterminado), la precisión de microsegundos está disponible en todo el rango de valores. […] Los valores de marca de tiempo se almacenan como segundos antes o después de la medianoche del 01-01-2000.