En informática, una época es una fecha y hora a partir de las cuales una computadora mide la hora 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 1 de enero de 1970 a las 00:00:00 UT , un punto en el tiempo conocido como la época de Unix . La época de tiempo de NT en Windows NT y posteriores se refiere a la hora del sistema de Windows NT en intervalos de (10 ^ -7) s desde las 0h del 1 de enero de 1601. [1]
Las épocas de computación casi siempre se especifican como la medianoche del tiempo universal en una fecha en particular.
Variación en detalle
Los sistemas de cronometraje de software varían ampliamente en la precisión de la medición del tiempo (granularidad); algunos sistemas pueden usar unidades de tiempo tan grandes como un día, mientras que otros pueden usar nanosegundos . Por ejemplo, para una fecha de época de la 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 el número 86400, el número de segundos en un día. Cuando es necesario representar tiempos 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.
Problemas con la representación del tiempo por computadora basada en la época
Las computadoras generalmente no almacenan cantidades 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 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 ocurre 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 la hora de la época nuevamente.
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 solo asignaban suficiente espacio 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 1 de enero de 1900, dando 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 similares a Unix que mantienen el tiempo como segundos transcurridos desde la fecha de época del 1 de enero de 1970, y asignan suficiente almacenamiento de cronometraje para almacenar números tan grandes como 2 147 483 647 experimentarán un problema de desbordamiento el 19 de enero de 2038 si no se soluciona de antemano. Esto se conoce como el problema del año 2038 . Una corrección que implica duplicar el almacenamiento asignado al cronometraje en estos sistemas les permitirá representar fechas de más de 290 mil millones de años en el futuro.
Existen otros problemas de cronometraje más sutiles en la 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, que representan 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 la hora 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 corregirlo: "un cambio ahora interrumpiría las fórmulas que se escribieron para adaptarse a esta anomalía". [3]
Época en sistemas de tiempo basados en satélites
Hay al menos seis sistemas de navegación por satélite , todos los cuales funcionan transmitiendo señales horarias . De los únicos dos sistemas satelitales con cobertura global, el GPS calcula su señal de tiempo a partir de una época, mientras que GLONASS calcula el tiempo como un desfase de UTC , con la entrada de UTC ajustada para segundos intercalares . De los únicos otros dos sistemas que apuntan a la cobertura global, Galileo calcula a partir de una época y Beidou calcula a partir de UTC sin ajuste por segundos intercalares. [4] El GPS también transmite la compensación entre la hora UTC y la hora del GPS, y debe actualizar esta compensación cada vez que hay un segundo intercalar , lo que requiere que los dispositivos de recepción 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 la Agencia Espacial Europea en Galileo en "Ecuaciones para corregir la escala de tiempo del sistema a la escala de tiempo de referencia". [5]
Fechas de época notables en informática
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 un tiempo establecido (generalmente la medianoche UTC al comienzo de la fecha dada).
Fecha de la época | Usos notables | Justificación de la selección |
---|---|---|
0 1 de enero aC [nb 1] | MATLAB [6] | |
1 de enero de 1 d. C. [nb 1] | Microsoft .NET , [7] [8] Go , [9] REXX , [10] Rata Die [11] | Era común , ISO 2014 , [12] RFC 3339 [13] |
14 de octubre de 1582 | SPSS [14] | |
15 de octubre de 1582 | UUID versión 1 | La fecha de la reforma gregoriana al calendario cristiano. [15] |
1 de enero de 1601 | NTFS , COBOL , Win32 / Win64 (época de tiempo NT) | 1601 fue el primer año del ciclo del calendario gregoriano de 400 años en el momento en que se creó Windows NT. [dieciséis] |
31 de diciembre de 1840 | Lenguaje de programación MUMPS | 1841 fue un año no bisiesto varios años antes del año de nacimiento del ciudadano estadounidense de mayor edad cuando se diseñó el idioma. [17] |
17 de noviembre de 1858 | VMS , Observatorio Naval de los Estados Unidos , sellos de día DVB SI de 16 bits, otros cálculos relacionados con la astronomía [18] | 17 de noviembre de 1858, 00:00:00 UT es el cero del día juliano modificado ( MJD ) equivalente al día juliano 2400000.5 [19] |
30 de diciembre de 1899 | Microsoft COM DATE , Object Pascal , LibreOffice Calc , Google Sheets [20] | Valor técnico interno utilizado por Microsoft Excel; para compatibilidad con Lotus 1-2-3 . [2] |
31 de diciembre de 1899 | Dyalog APL , [21] Microsoft C / C ++ 7.0 [22] | Elegido para que (fecha mod 7) produzca 0 = domingo, 1 = lunes, 2 = martes, 3 = miércoles, 4 = jueves, 5 = viernes y 6 = sábado. La última versión de Microsoft de no Visual C / C ++ utilizó esto, pero posteriormente se revirtió. |
0 enero 1900 | Microsoft Excel , [2] Lotus 1-2-3 [23] | Aunque lógicamente 0 de enero de 1900 equivale al 31 de diciembre de 1899, estos sistemas no permiten que los usuarios especifiquen esta última fecha. Dado que 1900 se trata incorrectamente como un año bisiesto en estos sistemas, el 0 de enero de 1900 corresponde en realidad a la fecha histórica del 30 de diciembre de 1899. |
1 de enero de 1900 | Protocolo de tiempo de red , IBM CICS , Mathematica , RISC OS , VME , Common Lisp , Michigan Terminal System | |
1 de enero de 1904 | LabVIEW , Apple Inc. 's Mac OS clásico , JMP lenguaje de scripts, Palm OS , MP4 , Microsoft Excel (opcionalmente), [24] IGOR Pro | 1904 es el primer año bisiesto del siglo XX. [25] |
1 de enero de 1960 | Sistema SAS [26] | |
31 de diciembre de 1967 | Elija el sistema operativo y las variantes (jBASE, Universe, Unidata, Revelation, Reality) | Elegido para que (fecha mod 7) produzca 0 = domingo, 1 = lunes, 2 = martes, 3 = miércoles, 4 = jueves, 5 = viernes y 6 = sábado. [27] |
1 de enero de 1970 | Unix Epoch también conocido como POSIX time , utilizado por Unix y sistemas similares a Unix ( Linux , macOS ) y lenguajes de programación : la mayoría de las implementaciones de C / C ++ , [28] Java , JavaScript , Perl , PHP , Python , Ruby , Tcl , ActionScript . También utilizado por Precision Time Protocol . | |
1 de enero de 1978 | AmigaOS . [29] [nb 2] Los sistemas de hardware Commodore Amiga se introdujeron entre 1985 y 1994. Última versión del sistema operativo 4.1 (diciembre de 2016). AROS , MorphOS . | |
1 de enero de 1980 | IBM BIOS INT 1Ah, DOS , OS / 2 , FAT12 , FAT16 , FAT32 , exFAT sistemas de archivos | La PC IBM con su BIOS, así como 86-DOS , MS-DOS y PC DOS con su sistema de archivos FAT12 se desarrollaron e introdujeron entre 1980 y 1981. |
6 de enero de 1980 | Marcas de tiempo Qualcomm BREW , GPS , ATSC de 32 bits | El GPS cuenta las semanas (se define que una semana comienza el domingo) y el 6 de enero es el primer domingo de 1980. [30] [31] |
1 de enero de 2000 | AppleSingle , AppleDouble , [32] PostgreSQL , [33] [nb 3] ZigBee UTCTime, [34] Ingenuity helicóptero [35] | |
1º de enero de 2001 | Manzana 's Cacao marco | 2001 es el año del lanzamiento de Mac OS X 10.0 (pero NSDate para EOF 1.0 de Apple se desarrolló en 1994). |
Ver también
- hora del sistema
- Época Unix
Notas
- ^ a b Calendario gregoriano proléptico .
- ^ AmigaOS mide el tiempo en segundos y lo almacena en un entero de 32 bits con signo. Después del 19 de enero de 2046, 03:14:07, la fecha será negativa. La última versión del sistema operativo 4.1 (2016) no tiene solución para esto.
- ^ Tenga en cuenta que la función Epoch devuelve el unix Epoch SELECT EXTRACT (EPOCH FROM TIMESTAMP WITH TIME ZONE '1970-01-01 00: 00: 00-00'); devuelve 0.
Referencias
- ^ W32tm | Documentos de Microsoft
- ^ a b c Spolsky, Joel. "¿Por qué los formatos de archivo de Microsoft Office son tan complicados? (Y algunas soluciones)" . Consultado el 8 de marzo de 2009 .
- ^ Dershowitz, Nachum ; Reingold, Edward (2008). Cálculos calendáricos (3 ed.). Prensa de la Universidad de Cambridge . págs. xxi, xxvi. ISBN 978-0-521-70238-6.
- ^ Subirana, J. Sanz; Zornoza, JM Juan; Hernández-Pajares, M. (2011). "Referencias de tiempo en GNSS" . gssc.esa.int/navipedia . Agencia Espacial Europea.
- ^ "Descripción de escala de tiempo GNSS Galileo" (PDF) . Oficina de las Naciones Unidas para Asuntos del Espacio Ultraterrestre. 2016. Sección 5d.
- ^ "datenum" , MathWorks, consultado el 7 de julio de 2015 .
- ^ "Clase GregorianCalendar" . MSDN . Observaciones . Consultado el 26 de abril de 2015 .
- ^ " Estructura DateTimeOffset " (.NET Framework 4.5), MSDN , 2015.
- ^ "Tiempo de paquete" . golang.org . Consultado el 26 de abril de 2015 .
- ^ "Fecha: referencia de z / OS TSO / E REXX" . IBM.com . IBM. 2014. SA32-0972-00.
- ^ Dershowitz, Nachum ; Reingold, Edward (2008). "El calendario gregoriano". Cálculos calendáricos (3 ed.). Prensa de la Universidad de Cambridge. ISBN 978-0-521-70238-6.
- ^ Cowlishaw, Mike Frederic (1990). El lenguaje Rexx: un enfoque práctico para la programación (2 ed.). Prentice Hall. págs. 93, 177. ISBN 0-13-780651-5.
- ^ "Notas de la versión de Go 1: cambios importantes en la biblioteca: tiempo" . golang.org. 2012-03-28 . Consultado el 26 de abril de 2015 .
- ^ "Formatos de fecha y hora" . IBM.com . IBM . Consultado el 24 de enero de 2020 .
- ^ Leach, P .; Mealling, M .; Salz, R. (julio de 2005). "RFC 4122: estándar propuesto: un espacio de nombres URN de identificador único universal (UUID)" . tools.ietf.org . Grupo de Trabajo de Ingeniería de Internet.
- ^ Chen, Raymond (6 de marzo de 2009). "¿Por qué la época de Win32 es el 1 de enero de 1601?" . Lo viejo y nuevo . Blogs de MSDN.
- ^ "¿Qué pasó en 1841?" . Preguntas frecuentes sobre la tecnología M y el lenguaje MUMPS, parte 1/2 . Archivado desde el original el 28 de agosto de 2015 . Consultado el 14 de agosto de 2015 .
- ^ Winkler, Gernot MR "Fecha juliana modificada" . Observatorio Naval de Estados Unidos . Archivado desde el original el 14 de febrero de 2013 . Consultado el 29 de enero de 2015 .
- ^ "Origen de tiempo base VMS" . vms.tuwien.ac.at/info/humour . Technische Universität Wien. Archivado desde el original el 6 de junio de 2007.
- ^ "Introducción a la API de Google Sheets" . Desarrolladores de Google .
- ^ "Número de día internacional" . help.dyalog.com . Consultado el 27 de noviembre de 2018 .
- ^ "Gestión del tiempo" . msdn.microsoft.com .
- ^ "¿Cuál es la historia detrás del 30 de diciembre de 1899 como fecha base?" . social.msdn.microsoft.com .[ enlace muerto permanente ]
- ^ "Fechas y horas en Excel" . cpearson.com .
- ^ "MacTech - La revista de tecnología de Apple" . mactech.com .
- ^ "Introducción a Fechas y Horarios en SAS" (PDF) .
- ^ Mark Pick, Conferencia internacional de espectro de abril de 2010.
- ^ "time_t - Referencia de C ++" . Consultado el 6 de abril de 2015 .
- ^ Barthel, Olaf (septiembre de 1998). "Archivo: el problema del año 2000 y el Amiga" . obligement.free.fr .
- ^ Levine, Judah (5 de julio de 2002). "Distribución de tiempos y frecuencias mediante satélites" (PDF) . Informes sobre avances en física . 65 (8) - a través del Instituto Nacional de Estándares y Tecnología (NIST).
- ^ "Sistemas de tiempo y fechas - GPS Time" . Departamento de Oceanografía, NPS . Escuela de Postgrado Naval, Departamento de Oceanografía. Archivado desde el original el 2 de enero de 2019 . Consultado el 18 de febrero de 2019 .
- ^ "Nota del desarrollador de formatos AppleSingle / AppleDouble para archivos externos" (PDF) . Archivado desde el original (PDF) el 17 de julio de 2011 . Consultado el 23 de octubre de 2007 .
- ^ "Documentación de PostgreSQL 9.1.24. Capítulo 8: Tipos de datos. 8.5. Tipos de fecha / hora" . PostgreSQL.org .
Nota: Cuando los valores de la 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 la marca de tiempo se almacenan como segundos antes o después de la medianoche 2000-01-01.
- ^ "Especificación de la biblioteca de clúster ZigBee" . Sección 2.5.2.21 UTCTime.
- ^ "https://twitter.com/nasajpl/status/1389714335107207168/photo/1" . Twitter . Consultado el 5 de mayo de 2021 . Enlace externo en
|title=
( ayuda )
enlaces externos
- Fechas críticas y significativas (JR Stockton), una lista extensa de fechas que son problemáticas para varios sistemas operativos y dispositivos informáticos.
- Fechas de problemas potenciales para computadoras (pdf) Una lista de fechas de problemas potenciales para computadoras y software de 2001 a 2100 (IET).