El tiempo Unix cuenta segundos desde 1970
Una marca de tiempo Unix es el número de segundos transcurridos desde la medianoche UTC del 1 de enero de 1970. No lleva huso horario ni horario de verano, y por eso los servidores y las bases de datos guardan así los instantes. Una fecha legible es ese número representado en un huso concreto.
El número de dígitos revela la unidad. Diez dígitos son segundos y trece son milisegundos. JavaScript trabaja en milisegundos mientras que las herramientas Unix y muchas bases de datos trabajan en segundos, así que multiplicar o dividir por mil sale a cada paso.
ISO 8601 es la forma estándar de escribirla, como 2026-09-16T00:00:00Z. La Z final significa UTC, y aparece un desplazamiento como +09:00 cuando se adjunta un huso. Intercambiar fechas en este formato elimina la ambigüedad que crean los distintos órdenes nacionales de día, mes y año.
Errores que vienen de los husos horarios
La marca de tiempo no tiene huso, pero la fecha que lees en pantalla sí. Madrid va dos horas por delante de UTC en verano, así que la medianoche UTC del 16 de septiembre son las dos de la madrugada allí, y en Nueva York aún son las ocho de la tarde del día 15. Comparar solo fechas es lo que produce un desfase aparente de un día.
Mezclar segundos y milisegundos lanza el resultado a 1970 o a decenas de miles de años. Una conversión que cae en el 1 de enero de 1970 significa que un valor en milisegundos se leyó como segundos; un año en los cincuenta mil significa lo contrario.
El problema de 2038 afecta solo a los sistemas que cuentan segundos en un entero de 32 bits con signo. Pasado el 19 de enero de 2038 el valor desborda y se vuelve negativo. La mayoría de entornos actuales usan 64 bits, así que esto asoma sobre todo en dispositivos empotrados antiguos y columnas de bases de datos heredadas.