Skip to content

Guide

Leer timestamps en logs y respuestas JSON de una API

Un archivo de log lleno de números de diez dígitos es un archivo de log lleno de fechas que todavía no puedes leer.

By Published

Abre casi cualquier log de servidor o respuesta JSON en bruto de una API y acabarás encontrando un campo que es solo un número: 1732650000, o quizá 1732650000000. Nada en los dígitos en sí dice qué fecha es esa, ni siquiera qué unidad estás mirando. Esta es una de las fricciones pequeñas más comunes al depurar — estás mirando exactamente el dato que necesitas, y es ilegible hasta que lo conviertes. Esta guía es un recorrido práctico de cómo leer esos números rápido, sin adivinar.

El truco del conteo de dígitos

Todo timestamp Unix que veas en un log o respuesta de API moderna cae en una de cuatro resoluciones, y para cualquier fecha entre aproximadamente 2001 y 2286 tienen conteos de dígitos distintos:

DígitosUnidadEjemploSe resuelve a
10Segundos17326500002024-11-26T21:00:00Z
13Milisegundos17326500000002024-11-26T21:00:00.000Z
16Microsegundos17326500000000002024-11-26T21:00:00.000000Z
19Nanosegundos17326500000000000002024-11-26T21:00:00.000000000Z

Cada paso añade exactamente tres dígitos porque cada unidad es 1000 veces más fina que la anterior, y esa proporción se mantiene en cualquier punto de la era actual — no necesitas saber la fecha real para contar dígitos, solo cuéntalos primero y luego convierte. Este es el mismo método de detección que usa automáticamente nuestro conversor de timestamps, pero vale la pena conocerlo a simple vista para los momentos en que solo estás revisando un log en una terminal.

Archivos de log: cuidado con unidades mixtas en el mismo archivo

Un solo archivo de log puede mezclar resoluciones de verdad, porque agrega salida de más de una fuente. Un proxy inverso puede registrar el tiempo de solicitud en segundos mientras el servidor de aplicación detrás registra en milisegundos; un proceso Node.js (Date.now() son milisegundos por convención) escribiendo al mismo flujo agregado que un servicio en Go (time.Now().Unix() son segundos por convención) producirá exactamente esta mezcla. No hay forma de arreglar esto después del hecho salvo convirtiendo línea por línea usando el propio conteo de dígitos de cada valor — asumir consistencia en todo el archivo es una forma fiable de malinterpretar la mitad de tu log.

Si estás extrayendo una columna de timestamps de un log para analizarla — digamos, todo lo que coincide con un patrón grep, o una columna exportada de un visor de logs —, pega la lista completa en un conversor que acepte entrada por lotes en lugar de convertir valores de uno en uno. Cada línea se detecta y se convierte de forma independiente, así que las unidades mixtas en el mismo pegado no son un problema.

Respuestas de API JSON: cadena o entero, y cómo distinguirlos

Un payload JSON te da una variable más: si el campo de timestamp es un número en bruto o una cadena formateada. Ambos son comunes, y ninguno es inherentemente mejor — son simplemente decisiones de diseño distintas, cubiertas con más detalle en nuestra guía de epoch vs. ISO 8601 vs. RFC 3339. En la práctica:

"created_at": 1732650000 es un entero epoch en bruto — aplica la comprobación de conteo de dígitos anterior. "created_at": "2024-11-26T21:00:00Z" ya es una cadena RFC 3339 y es legible tal cual, sin necesidad de conversión. Algunas APIs, de forma confusa, envían el número como cadena ("created_at": "1732650000") — eso sigue siendo un valor epoch según la regla del conteo de dígitos, solo que entre comillas, normalmente porque el autor de la API no quería que un entero de 64 bits se truncara silenciosamente con un lenguaje cliente que solo tiene números seguros de 53 bits (el tipo Number de JavaScript, lo más habitual). Si tu flujo de trabajo implica reformatear la respuesta — digamos, llevar ese campo a una hoja de cálculo o a otro formato estructurado —, el conversor CSV ↔ JSON gestiona la conversión estructural; después seguirías pasando los propios valores de timestamp por un conversor dedicado.

Una lista mental rápida

Cuando te topes con un timestamp ilegible en un log o cuerpo de respuesta: cuenta primero los dígitos (diez, trece, dieciséis o diecinueve te dice la unidad); comprueba si está entre comillas como cadena o como número sin más, ya que eso solo afecta a cómo lo extraes, no a lo que significa; y si el mismo archivo mezcla unidades, convierte por línea en lugar de asumir una sola resolución para todo el archivo. Nada de esto requiere memorizar factores de conversión — es reconocimiento de patrones que se construye después de hacerlo unas cuantas docenas de veces, y un conversor hace la aritmética de cualquier forma.

Frequently asked questions

¿Cómo sé si un timestamp de log está en segundos o milisegundos?
Cuenta los dígitos de la parte entera. Unos diez dígitos (que cubren fechas de 2001 a 2286) significan segundos; trece dígitos significan milisegundos; dieciséis significan microsegundos; diecinueve significan nanosegundos. Esto funciona porque cada unidad es 1000 veces más fina que la anterior, lo que añade exactamente tres dígitos en cualquier fecha de la era moderna.
¿Por qué distintas líneas de log en el mismo archivo a veces usan unidades distintas?
Normalmente porque el log agrega la salida de varios servicios o librerías que nunca se estandarizaron en una única resolución de epoch — un servicio en Java que registra milisegundos junto a un script de shell que registra segundos es el caso clásico. No hay una forma fiable de forzar la consistencia después del hecho; conviertes cada línea según su propio conteo de dígitos.
¿Puedo pegar un archivo de log entero en un conversor de timestamps?
Puedes pegar una lista de valores epoch en bruto, uno por línea, y obtener cada uno convertido de forma independiente — es la forma más rápida de revisar de un vistazo una columna de timestamps extraída de un log o una exportación de base de datos. Primero necesitarías extraer solo la columna numérica de timestamp del texto de log en bruto, por ejemplo con un grep rápido o dividiendo una hoja de cálculo.
¿Por qué una API JSON a veces envía un timestamp como cadena y a veces como número?
Porque no hay un único estándar — algunas APIs emiten un entero epoch en bruto (compacto, pero tienes que saber la unidad), otras emiten una cadena RFC 3339 (autodescriptiva, fácil de leer de un vistazo en el cuerpo de una respuesta). Ambas representan el mismo instante; cuál obtengas es pura elección del diseñador de la API, documentada (con suerte) en el esquema del campo.

Sources & references

Authoritative references cited by this piece. Verified by Buğra Sözeri on the dates shown and re-checked at every deploy.

Related

Published September 25, 2026