Datos, calidad y series · Última actualización: 2026-01-27

Timestamps: UTC, zonas horarias y desfases: guía rápida

Los timestamps son el típico “detalle tonto” que, cuando se rompe, lo rompe TODO 😅: máximos diarios mal puestos, lluvia diaria que no cuadra, picos a horas raras… y tú pensando que el sensor está poseído.

Esta guía es para que lo tengamos controlado: qué es UTC, qué pasa con las zonas horarias, cómo nos afecta el cambio de hora, y cómo detectar desfases del logger y errores de pipeline sin drama.

Este artículo forma parte del tema Datos de calidad en WikiMeteo.es, donde reunimos conceptos y guías prácticas para entender mejor el tiempo y el clima.

1. Qué es un timestamp (sin humo)

Un timestamp es “cuándo” pasó una medida. No es solo un número: incluye fecha, hora y, muy importante, zona horaria (o al menos una política clara).

Si el “cuándo” está mal, cualquier cosa que dependa del tiempo se deforma: máximos/mínimos diarios, acumulados diarios, medias horarias, comparaciones con radar…

2. Regla de oro

Guardar siempre en UTC y convertir a hora local solo al mostrar.

Si guardas en local, tarde o temprano te comes el cambio de hora o un proceso que asume UTC y te lo desplaza todo.

3. Zonas horarias y cambio de hora (DST) explicado fácil

En muchos sitios (Europa incluida), hay días con 23 horas (salto hacia delante) y días con 25 horas (vuelta atrás). Eso significa:

  • Un “día local” puede no tener 24h.
  • Si calculas diarios como si siempre fueran 24h, saldrán raros.
  • Puede haber horas que se repiten (duplicados) o que no existen (gaps).

4. Errores típicos que veremos en estaciones

4.1 Local vs UTC mezclado

Síntoma: máximos diarios “desplazados” (ej. pico de radiación solar a las 11:00 o 13:00), o lluvia diaria que “corta” a horas extrañas.

Causa: una parte del pipeline trata timestamps como UTC y otra como local.

Arreglo: almacenamiento UTC, UI local. Y prohibido usar datetime “naive” (sin zona) sin una política.

4.2 Timestamp naive (sin zona horaria)

Síntoma: en unos sitios cuadra y en otros no, o al migrar de servidor se descoloca todo.

Causa: “2026-01-27 12:00:00” no dice si es UTC o local.

Arreglo: guardar con offset o normalizar a UTC antes de persistir.

4.3 Drift del logger (desfase progresivo)

Síntoma: cada semana el pico de radiación solar aparece un poco “corridito”; o los eventos ya no casan con radar/estaciones cercanas.

Causa: el reloj interno del datalogger deriva.

Arreglo: sincronización (NTP si se puede) y registrar correcciones. No reescribir raw sin trazabilidad.

4.4 Duplicados y gaps

Síntoma: dos muestras con el mismo timestamp (sobre todo en la vuelta del cambio de hora) o huecos raros.

Arreglo: deduplicación por regla clara (ID de muestra si existe, o conservar la más “fiable”) y flags de datos faltantes.

5. Ejemplos “de sensores reales” (lo que suele delatarlo)

  • Pluviómetro (tipping bucket): el acumulado diario parece “bajar” o reiniciarse en horas concretas → muchas veces es reset del contador + timestamps mal interpretados.
  • Radiación solar: el máximo del día aparece consistentemente 1–2 horas desplazado → sospecha UTC/local o drift.
  • Temperatura/humedad: medias diarias raras pero la curva es “bonita” → el dato es bueno, el “día” está mal cortado.
  • Viento (media/racha): si calculas rachas por ventanas y las ventanas están mal alineadas por zona horaria, verás rachas en horas “sin viento” (porque estás mezclando intervalos).

6. Checklist rápido (para no perdernos)

  1. ¿Guardamos en UTC? (sí/no)
  2. ¿La UI muestra en local? (sí/no)
  3. ¿Hay días con 23/25 horas? (cambio de hora)
  4. ¿Hay duplicados? (misma fecha-hora repetida)
  5. ¿Hay gaps? (saltos grandes sin datos)
  6. ¿El máximo de radiación cae cerca del mediodía local? (sanity check)
  7. ¿Comparación con radar/vecinas cuadra en la hora del evento?

7. Errores comunes (los que nos hacen perder una tarde)

  • Guardar en local “porque es más cómodo”
  • Mezclar fuentes con zonas distintas sin normalizar
  • Calcular diarios asumiendo 24h siempre
  • No marcar datos faltantes (parece que no llovió cuando en realidad faltó el dato)

8. Mini-glosario

  • UTC: referencia global sin cambio de hora
  • DST: cambio de hora estacional (23h/25h)
  • Drift: deriva del reloj del logger
  • Naive datetime: fecha-hora sin zona horaria

9. Referencias y lecturas recomendadas

  • ECMWF
  • Copernicus
  • WMO