Guía

Timestamp, UTC y hora local: cómo evitar desfases

Distingue un instante UTC de su representación local y evita errores de zona horaria y cambios de horario al convertir timestamps.

por Tools in a Tab · Publicado el · Revisado el

Respuesta breve

Un timestamp identifica un instante; UTC y la hora local son maneras de mostrarlo. El número Unix no cambia al viajar de Madrid a Ciudad de México, pero la fecha y hora visibles sí.

Un instante, varias representaciones

Timestamp: 1767225600 s
UTC:       2026-01-01 00:00:00Z
Madrid:    2026-01-01 01:00:00 (invierno)

No debes sumar una hora al timestamp para «convertirlo a Madrid». Conserva el instante y aplica la zona solo al presentar o recoger una hora local.

Cuándo elegir UTC

UTC es la opción adecuada para logs, expiraciones, eventos entre sistemas y almacenamiento de instantes. Evita que el mismo valor cambie de significado según la máquina que lo procese. Una fecha ISO con sufijo Z declara UTC de forma explícita.

La hora local es necesaria cuando la intención humana depende del calendario del lugar: una cita a las 09:00, la apertura de una tienda o una tarea diaria. En esos casos conviene conservar también el identificador de zona, no solo un desplazamiento como +01:00, porque las reglas pueden variar según la fecha.

El problema del horario de verano

En un cambio de primavera, el reloj salta y existe un intervalo de horas locales que nunca ocurre. En otoño, un intervalo se repite y una misma hora local puede apuntar a dos instantes. Un desplazamiento fijo no resuelve ambos casos.

El conversor de fecha y timestamp rechaza una hora local inexistente y avisa si resulta ambigua en la zona del navegador. Para una conversión reproducible entre países, usa UTC.

Checklist

  • ¿La entrada incluye Z, un offset o una zona conocida?
  • ¿El sistema necesita un instante o una hora civil recurrente?
  • ¿La unidad del timestamp está declarada?
  • ¿Se ha probado una fecha de cambio horario?
  • ¿La interfaz muestra la zona junto al resultado?

Un desfase exacto de una o dos horas suele ser una pista de zona mal aplicada; un factor de mil suele indicar, en cambio, una confusión entre segundos y milisegundos.

Fuente primaria

La especificación de Date en ECMAScript distingue el valor temporal UTC de las operaciones que lo presentan como hora local.