Español

Herramientas de desarrollo · Convertidor de marca de tiempo Unix

Por qué el tiempo de Unix comienza el 1 de enero 1970: una breve historia de la época

· Antecedentes

marcas de tiempo tiempo Unix formatos de datos

Una línea de tiempo que irradia desde el punto cero en la época Unix
Ilustración de vector original de ToolAcre

No pasó nada el 1 enero 1970; La fecha se eligió por conveniencia después de que el reloj original de Unix amenazara con desbordarse. Esta publicación cuenta la historia de los primeros relojes de Unix, el cambio a segundos y cómo la convención se extendió por todas partes.

Una fecha que nadie celebra: por qué 1970 sigue apareciendo en errores, valores predeterminados y paneles medio siglo después

Enero 1970 aparece cada vez que el software comete un error de duración pequeña o los segundos cuentan como milisegundos. No es un cumpleaños alternativo generado por ToolAcre; es el punto cero desde el cual se interpretó la entrada. La prueba para la época cero devuelve `1970-01-01T00:00:00.000Z` y jueves.

Ver esa fecha es, por lo tanto, diagnóstico. Un valor cercano a cero, un campo faltante forzado a cero o una discrepancia de escala pueden aparecer cerca. Capture el valor bruto antes de culpar al formato. La salida del calendario revela la aritmética que recibió.

La tabla de época notable de ToolAcre le da a cero una etiqueta deliberada, lo que refuerza que 1970 es una referencia definida en lugar de una página de error elegida por el navegador.

El primer reloj de Unix: contando sexagésimas de segundo desde el inicio de 1971 y quedándose sin espacio de 32 bits en menos de tres años

El libro de trabajo proporcionó una descripción detallada de un reloj antiguo que contaba sesentavos desde 1971. Ninguna de las fuentes del repositorio requeridas documenta ese historial. Repetirlo de memoria violaría el contrato de creación incluso si un historial externo pudiera respaldarlo más adelante.

Lo que se puede demostrar es el eje actual: cero en la época, segundos positivos después y segundos negativos antes. Ese mecanismo es suficiente para utilizar el convertidor y el software de diagnóstico. Un futuro artículo histórico debería agregar fuentes primarias o académicas revisadas en lugar de tratar el código como evidencia de reuniones de diseño.

El repositorio no obtiene el primer diseño de reloj de Unix, por lo que no se afirma ninguna reconstrucción histórica.

ToolAcre nombra su marca de tiempo Unix de entrada y la define en la guía de error como segundos o milisegundos desde 1970-01-01 UTC. La fuente no explica por qué se seleccionó ese año, si la redondez importaba o qué horizonte querían los diseñadores. Esos motivos permanecen omitidos.

La aritmética explica la utilidad duradera de un origen fijo: la resta produce la distancia transcurrida, la comparación ordena los instantes y un signo indica en qué lado del cero se encuentra un valor. La elección del cero es convencional; la coherencia entre productores y consumidores es lo que hace que los números sean interoperables.

Esta distinción mantiene separadas la convención y las consecuencias. El software puede depender con confianza de las consecuencias mientras los historiadores continúan evaluando la evidencia sobre el origen de la convención.

La definición implementada utiliza 1970; Los motivos para elegirlo requieren fuentes históricas que no están presentes aquí.

Las pruebas modelan todos los días como lo hace la conversión POSIX y saltan explícitamente de `2016-12-31T23:59:59Z` a `2017-01-01T00:00:00Z`. Esa es una evidencia ejecutable del comportamiento de esta herramienta. No es una cita de la redacción ni del alcance completo de ninguna norma externa.

Mantener las afirmaciones de estándares distintas de las pruebas de implementación. Una prueba demuestra lo que hace un lanzamiento bajo sus accesorios; un documento de estándares define lo que deben hacer los sistemas conformes. Aquí el contrato práctico es lo suficientemente claro como para predecir la producción sin inventar la historia de la formalización.

La prueba también evita que una refactorización futura inserte silenciosamente una etiqueta de salto especial en la salida. Se protege la compatibilidad observable sin exagerar por qué existe la convención.

ToolAcre prueba el modelo de estilo POSIX pero no sirve como cita de estándares

JavaScript Date representa su recuento de época en milisegundos, mientras que ToolAcre acepta segundos de Unix y los convierte multiplicándolos por 1,000. La ruta también devuelve ambas formas. Ese límite explica por qué las aplicaciones web frecuentemente exponen el mismo instante con tres ceros decimales adicionales.

El repositorio no puede establecer la cronología mediante la cual las bases de datos, las bibliotecas C y otros ecosistemas adoptaron representaciones de época. En lugar de narrar una extensión sin fuentes, muestra una costura de interoperabilidad actual y etiqueta la unidad utilizada. Esa es evidencia procesable para los desarrolladores que trabajan hoy.

Esa restricción evita una falla de contenido familiar: una secuencia de hitos plausibles repetidos sin citas hasta que los lectores posteriores confunden la repetición acumulada con evidencia documental.

La evidencia del repositorio muestra la representación de milisegundos de JavaScript, no el historial de difusión completo

Una época fija no tiene zona local. ToolAcre formatea la fecha resultante en UTC y por separado en la zona local del navegador. Los valores negativos se extienden antes de cero, como lo demuestra la prueba −1. Esas consecuencias se derivan directamente de un eje numérico y una capa de formato.

La implementación también tiene un rango de fechas de ±8.64×10¹⁵ milisegundos. Ése es un límite de la representación elegida, no un límite inherente a la idea abstracta de una época. Identifique siempre de quién es el rango y la unidad que se están analizando antes de generalizar a partir del resultado de un convertidor.

El formateador local puede aplicar una fecha anterior o posterior al límite UTC dependiendo del desplazamiento. Eso no mueve el cero; cambia sólo la proyección del calendario humano.

Lo que esto no cubre: épocas de otros sistemas, como 1900, 1601 y 1980, que tienen sus propias historias.

Otros sistemas pueden elegir otro cero y otra escala, por lo que un número entero grande puede no tener sentido en ambas unidades ToolAcre. Este artículo no relata las historias de los orígenes de 1900, 1601 o 1980. En cambio, el artículo 340 se centra en reconocer esa discrepancia y derivar conversiones a partir de definiciones documentadas.

Cuando se desconoce el origen, compárelo con la documentación fuente en lugar de cambiar ceros repetidamente. Un convertidor Unix asume intencionalmente 1970; no puede identificar automáticamente una época extranjera a partir de un número. Mantener el origen junto a la unidad evita que un éxito aritmético se convierta en un error semántico.

Los orígenes de otras épocas se comparan por separado sin reclamar sus historias aquí.

La lección confiable es mecánica: Unix cero se asigna al inicio de 1970 UTC, los signos se extienden a su alrededor y los segundos se convierten en milisegundos de JavaScript antes del formato de fecha. ToolAcre hace que cada uno de esos hechos sea observable con los valores 0, −1 y la tabla de época notable.

Las razones por las que las personas seleccionaron esa convención pertenecen a la historia, no a inferencias del código moderno. Respetar ese límite produce un relato más breve pero más verdadero. Utilice el convertidor para aritmética; utilizar material histórico apropiado antes de atribuir motivos o hitos.

La disciplina de la evidencia es parte de la precisión técnica. Una omisión precisa les dice a los mantenedores exactamente qué nuevas fuentes se requieren antes de que el relato histórico pueda expandirse de manera responsable.