Desarrollo · 2 min de lectura ·

Marcas de tiempo Unix: ¿segundos o milisegundos?

El fallo de los 13 dígitos que llega a producción cada semana, y una regla muy sencilla para distinguir las dos unidades.

JavaScript habla en milisegundos. La mayoría de los backends, en segundos. Si los mezclas, tus fechas acaban en enero de 1970 o decenas de miles de años en el futuro.

Cuenta los dígitos

Una marca de tiempo actual en segundos tiene 10 dígitos (1790000000 es el 21 de septiembre de 2026). El mismo instante en milisegundos tiene 13 dígitos; en microsegundos, 16, y en nanosegundos, 19.

La regla

Si el valor absoluto es mayor que 10¹², son milisegundos; si no, trátalo como segundos. Funciona para cualquier marca en milisegundos posterior a septiembre de 2001 y cualquier marca en segundos anterior al año 33658.

const ms = Math.abs(n) > 1e12 ? n : n * 1000;

Elige la unidad de forma explícita

El conversor de marcas de tiempo de 4Dev no adivina: "Unix Timestamp" significa segundos y "Unix Timestamp (ms)" significa milisegundos, junto a variantes en microsegundos y nanosegundos: 33 formatos en total, incluidos ISO 8601, RFC 2822, SQL DATETIME y las fechas seriales de Excel.

Abrir el conversor de marcas de tiempo