En informática, una época es una fecha y hora fijas que se utilizan como referencia a partir de la cual una computadora mide el tiempo del sistema . La mayoría de los sistemas informáticos determinan el tiempo como un número que representa los segundos eliminados de una fecha y hora arbitrarias particulares. Por ejemplo, Unix y POSIX miden el tiempo como el número de segundos que han pasado desde el jueves 1 de enero de 1970 a las 00:00:00 UT , un momento conocido como la época Unix . Los sistemas Windows NT , hasta Windows 11 y Windows Server 2022 inclusive , miden el tiempo como el número de intervalos de 100 nanosegundos que han transcurrido desde el 1 de enero de 1601 a las 00:00:00 UTC, lo que convierte a ese momento en la época de esos sistemas. [1] Las épocas informáticas casi siempre se especifican como medianoche, hora universal, en alguna fecha en particular.
Los sistemas de cronometraje de 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 está representada por número 86400, el número de segundos en un día. Cuando es necesario representar épocas anteriores a la época, es común utilizar el mismo sistema, pero con números negativos.
Esta representación del tiempo es principalmente para uso interno. En sistemas donde 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.
Las computadoras generalmente 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 el número de unidades de tiempo que han transcurrido desde la época de un sistema excede el mayor número 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 la hora se restablecerá a cero y el sistema informático pensará que la hora actual es nuevamente la época.
Lo más famoso es que los sistemas más antiguos que contaban el tiempo como el número de años transcurridos desde la época del 1 de enero de 1900 y que sólo asignaban espacio suficiente para almacenar los números del 0 al 99 experimentaron el problema del año 2000 . Estos sistemas (si no se corrigen 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 a principios del año 2000.
Incluso los sistemas que asignan más almacenamiento a la representación del tiempo no son inmunes a este tipo de error. Muchos sistemas operativos tipo Unix que mantienen el tiempo en segundos transcurridos desde la fecha de época del 1 de enero de 1970 y asignan suficiente 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 .
En la informática existen otros problemas de cronometraje más sutiles, como la contabilidad 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 .
Finalmente, algún software debe mantener la compatibilidad con software más antiguo que no mantiene el tiempo estrictamente de acuerdo con los sistemas tradicionales de cronometraje. Por ejemplo, Microsoft Excel observa la fecha ficticia del 29 de febrero de 1900 para mantener la compatibilidad de errores con versiones anteriores de Lotus 1-2-3 . [2] Lotus 1-2-3 observó 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 adaptarse a esta anomalía". [3]
Hay al menos seis sistemas de navegación por satélite , todos los cuales funcionan transmitiendo señales horarias . De los dos únicos sistemas satelitales con cobertura global, el GPS calcula su señal horaria a partir de una época, mientras que GLONASS calcula el tiempo como un desplazamiento de UTC , con la entrada UTC ajustada para los segundos intercalares . De los otros dos únicos sistemas que apuntan a una cobertura global, Galileo calcula a partir de una época y BeiDou calcula a partir de UTC sin ajuste por 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 de GPS manejen la actualización correctamente. Por el contrario, los segundos intercalares son transparentes para los usuarios de GLONASS. Las complejidades de calcular UTC a partir de una época se explican en la documentación de Galileo de la Agencia Espacial Europea en "Ecuaciones para corregir la escala de tiempo del sistema a la escala de tiempo de referencia". [5]
La siguiente tabla enumera las fechas de época utilizadas por software popular y otros sistemas relacionados con la computadora. El tiempo en estos sistemas se almacena como la cantidad de una unidad de tiempo particular (días, segundos, nanosegundos, etc.) que ha transcurrido desde una hora determinada (normalmente la medianoche UTC al comienzo de la fecha determinada).
Nota: Cuando los valores de marca de tiempo se almacenan como 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 2000-01-01.