Español

Herramientas de desarrollo · Convertidor de marca de tiempo Unix

Épocas de microsegundos y nanosegundos: acortamiento de los valores de los dígitos 16 y 19

· Cómo funciona

marcas de tiempo tiempo Unix flujo de trabajo del desarrollador

Un valor largo de nanosegundos que se reduce de microsegundos a milisegundos
Ilustración de vector original de ToolAcre

Algunos tiempos de ejecución emiten épocas en microsegundos o nanosegundos, dando valores de dieciséis o diecinueve dígitos que un convertidor de segundos o milisegundos no puede leer directamente. Esta publicación explica de dónde vienen y cómo acortarlos de forma segura.

Un número de diecinueve dígitos en un seguimiento: tiempo. Salida de UnixNano pegada en un convertidor y el resultado no tenía sentido

Un campo de seguimiento de diecinueve dígitos puede ser una época de nanosegundos, pero pegarlo directamente en este convertidor no prueba esa hipótesis. ToolAcre acepta segundos o milisegundos. Su error de rango incluso sugiere que un número de base de datos de gran tamaño puede usar microsegundos o nanosegundos, lo que indica al usuario que normalice antes de interpretar.

Conserve el texto original mientras investiga. Convertirlo en un número JavaScript normal ya puede alterar los dígitos de orden inferior antes de que se produzca cualquier división. El esquema del productor, la declaración de registro o la definición de la columna de la base de datos son una mejor evidencia que la longitud visual, especialmente para los contadores que no son épocas de Unix en absoluto.

Las cuatro resoluciones comunes: segundos, milisegundos, microsegundos y nanosegundos, con sus dígitos para las fechas actuales.

Los segundos avanzan una vez por segundo, los milisegundos mil veces más rápido, los microsegundos un millón de veces y los nanosegundos mil millones de veces. En las fechas actuales, estos suelen aparecer como diez, trece, dieciséis y diecinueve dígitos decimales. “A menudo” importa: los signos negativos, las fechas tempranas y los rangos distantes rompen la regla de los dígitos únicamente.

El umbral automático del panel distingue solo segundos de milisegundos en la magnitud 10¹¹. Un valor de microsegundos de dieciséis dígitos excede ese límite y se trataría como milisegundos, generalmente excediendo la fecha prevista por un factor de mil. Seleccione una unidad solo después de reducir la resolución no admitida a uno de los nombres de las rutas.

Cuatro etiquetas de resolución son comunes, pero el conteo de dígitos por sí solo no es un contrato de formato

El esquema menciona varias API de lenguaje y productos de almacenamiento, pero ninguno es un archivo fuente para esta herramienta. En lugar de asumir qué productor emitió un campo, inspeccione su documentación. Un sufijo como `_us` o `_ns`, una precisión declarada o un evento adyacente conocido proporcionan evidencia de que el ancho decimal no puede hacerlo.

También distingue una época de una duración monótona. Un contador de alta resolución puede medir el tiempo desde el inicio o arranque del proceso y no tener relación con 1970. Dividir dicho valor produce un contador más pequeño, no una fecha del calendario. Confirme tanto la unidad como el origen antes de llevar el resultado a un convertidor de época.

Identifique la resolución del productor, no una lista de presuntos emisores

Para reducir microsegundos a milisegundos, elimine un factor de 1,000; durante nanosegundos, elimine 1,000,000. La división de enteros deja de lado deliberadamente la precisión de menos de milisegundos. Para un valor positivo, el truncamiento toma la cuenta de milisegundos inicial. Para los negativos, elija una regla de redondeo que coincida con el productor en lugar de asumir que el corte de cadenas tiene una semántica idéntica.

Realice la operación con texto decimal o BigInt cuando la precisión sea importante. La división en coma flotante puede comenzar a partir de un número de diecinueve dígitos ya redondeado. Preservar el resto descartado junto al instante convertido si una investigación necesita un orden de eventos dentro de un milisegundo; ToolAcre no puede mostrar esas distinciones de menos de milisegundos.

Ejemplo resuelto: 1700000000123456789: recortar a milisegundos, leer el resultado y anotar los dígitos de menos de milisegundos que reservó

Tome `1738577696123456789` como nanosegundos. Trátelo como texto decimal, divídalo por 1,000,000 con aritmética de enteros y obtenga 1,738,577,696,123 milisegundos con un resto de 456,789 nanosegundos. Introduzca explícitamente el cociente de milisegundos; su lectura ISO es `2025-02-03T10:14:56.123Z`.

El resto no es ruido: dos eventos de seguimiento pueden compartir ese milisegundo mostrado pero difieren por debajo de él. Almacene los valores brutos para realizar pedidos y utilice la salida reducida solo para orientación humana. Redondear hacia arriba a 1,738,577,696,124 movería el instante mostrado al siguiente milisegundo e indicaría erróneamente la fuente.

La división de cadenas se puede revisar dígito por dígito: seis decimales eliminados corresponden exactamente a la escala de nanosegundo a milisegundo, mientras que el prefijo intacto sigue siendo el conteo del calendario.

Ejemplo resuelto: conservar un valor de 19 dígitos como texto y reducirlo a milisegundos

La garantía de entero exacto de JavaScript termina muy por debajo de los valores típicos de época de diecinueve dígitos. El analizador de ToolAcre finalmente llama a `Number`, por lo que alimentar el texto sin formato de nanosegundos a través del panel no puede conservar cada dígito. Su límite de fecha admitido y su selector de unidades no convierten el número en un contenedor de enteros de nanosegundos.

Utilice BigInt o una ruta de preprocesamiento con reconocimiento de cadenas para la reducción y luego pase el resultado de milisegundos de tamaño seguro. Esta secuencia es importante: analizar primero y dividir segundo puede corromper precisamente los dígitos que esperaba conservar. Una representación de calendario exitosa no prueba que el valor fuente de orden inferior haya sobrevivido.

Lo que esto no cubre: precisión del reloj, que no está relacionada con la resolución: una marca de tiempo de nanosegundos aún puede estar equivocada por segundos

La resolución le indica con qué precisión una representación puede distinguir valores; no te dice qué tan cerca estaba el reloj del tiempo físico. Un campo de nanosegundos puede derivarse de una fuente inexacta, mientras que un campo de segundos puede estar bien sincronizado. El convertidor no mide la calidad del reloj y no hace tal afirmación.

De manera similar, los dígitos adicionales se pueden rellenar con precisión en lugar de medir con precisión. Para el análisis de incidentes, compare relojes utilizando evidencia de sincronización y compare el orden de los eventos utilizando el contador documentado sin procesar. La conversión del calendario sólo proporciona legibilidad. No infieras la precisión a partir de una cola decimal larga o de los tres milisegundos que se muestran en ISO.

Conclusión: primero reduzca a milisegundos y luego convierta, y cómo el conversor de marca de tiempo de Unix lee el valor acortado con la unidad indicada

Reduzca la resolución no admitida antes de la conversión, conserve el original e indique el resto descartado. ToolAcre puede entonces hacer lo que promete su contrato: leer los segundos o milisegundos resultantes y mostrar formularios UTC, locales e ISO con la unidad seleccionada visible.

Si la fecha normalizada aún no tiene sentido, vuelva a visitar el origen en lugar de eliminar dígitos repetidamente. Un contador desde el inicio, otra época o una codificación no documentada pueden seguir siendo incorrectos en todas las escalas. La precisión de la unidad, el origen y el número entero son preguntas separadas; Responda las tres antes de confiar en una fecha legible por humanos.

El selector de unidades explícitas es importante después de la reducción porque la detección automática es solo un valor predeterminado. La elección de milisegundos registra la decisión de preprocesamiento en lugar de pedirle a la heurística de magnitud que la redescubra.