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

Timestamps: UTC, zonas horarias y desfases: cómo verlo en un panel

Un panel bueno para timestamps no tiene que ser enorme. Tiene que ser cruelmente claro: en 30 segundos tiene que decirte si tu estación está “en hora” o si está empezando a mentir con una sonrisa 🙂

Vamos a montar un panel simple (pero potente) para detectar: UTC vs local, cambios de hora (DST), deriva del reloj (drift), gaps, duplicados y datos fuera de orden. Y, lo más importante: aprender a leerlo sin confundir meteorología real con problemas de tiempo.

Este artículo forma parte del tema Datos de calidad en WikiMeteo.es, donde reunimos guías prácticas para operar sin autoengaños.

1. Qué problema resolvemos con un panel

En series largas es fácil “no ver” el fallo hasta que te revienta una estadística (máximas diarias, lluvia diaria, rachas). Un panel sirve para:

  • Detectar fallos temprano (antes de que duelan)
  • Distinguir si es temporal (timestamp/pipeline) o instrumental (sensor/instalación)
  • Dejar rastro: flags + historial (no repetir el mismo susto cada mes)

2. Panel mínimo recomendado (4 tarjetas + 1 mini-gráfica)

Con esto ya vas sobrado para el 80% de casos:

2.1 Tarjeta A: “Salud temporal” (semáforo)

  • Estado: OK / Aviso / Error
  • Último dato recibido: edad del último punto (min)
  • Cadencia esperada: 60s (o la tuya) y % de puntos a tiempo

2.2 Tarjeta B: “Continuidad” (gaps/duplicados/out-of-order)

  • Gaps hoy: cantidad y el mayor gap (min)
  • Duplicados hoy: cantidad
  • Out-of-order hoy: cantidad

2.3 Tarjeta C: “Zona horaria / offset sospechado”

  • Modo de almacenamiento: UTC (recomendado) o local
  • Offset detectado (si aplica): +3600, +7200…
  • Confianza: baja/media/alta (según evidencia)

2.4 Tarjeta D: “Deriva (drift) sospechada”

  • Drift estimado: segundos/día
  • Tendencia: estable / empeorando
  • Última calibración reloj (si se registra)

2.5 Mini-gráfica: “Hora del máximo diario” (radiación o proxy)

Gráfica por días: en el eje Y la hora del máximo (radiación ideal; si no hay, usar temperatura como proxy con cautela). Esto es un detector brutal de:

  • Offset fijo (UTC/local): línea casi horizontal pero desplazada
  • Drift: línea inclinada (se va moviendo día a día)
  • Cambio brusco: salto claro el día X

3. Cómo leer el panel (patrones típicos)

3.1 Caso: UTC vs local (offset fijo)

Qué verás: tarjeta C con offset estable (p.ej. +3600 o +7200) y mini-gráfica del máximo diario desplazada siempre igual.

Qué significa: alguien guardó local pero el sistema interpreta UTC (o al revés).

3.2 Caso: drift del logger

Qué verás: tarjeta D con drift distinto de 0 (p.ej. +10 s/día) y mini-gráfica del máximo diario moviéndose poco a poco.

Qué significa: reloj interno inestable o sincronización NTP fallando.

3.3 Caso: DST mal tratado

Qué verás: picos de duplicados (otoño) o gap de 60 min (primavera) en tarjeta B. A veces coincide con un salto en la mini-gráfica.

Qué significa: almacenamiento local o conversión aplicada dos veces.

3.4 Caso: out-of-order por red o backfill

Qué verás: out-of-order > 0 y, a veces, pequeños “dientes” en gráficas de variables si el front no reordena por observedTime.

Qué significa: datos llegan tarde y se insertan; hay que separar ingestTime y observedTime.

4. Checks automáticos con flags (lo que el panel debe calcular)

Estos checks se ejecutan por ventana (últimas 24h, 7d) y alimentan el panel con flags.

4.1 Checks de continuidad

  • gap_check: si delta > 2×cadencia → gap
  • duplicate_check: timestamps repetidos
  • out_of_order_check: delta negativo

4.2 Checks de cadencia

  • cadence_ok: % de deltas dentro de tolerancia (p.ej. 60s±2s)
  • burst_check: muchos puntos en el mismo segundo (reintento/duplicado)

4.3 Checks de zona/offset

  • offset_suspect: estimación de offset usando “variable reloj” (radiación) o eventos comparables
  • dst_signature: patrón de duplicado/gap de 3600s en fechas de cambio

4.4 Checks de drift

  • drift_suspect: tendencia en la hora del máximo diario (o correlación temporal con referencia)
  • ntp_health (si existe): últimos sync OK/FAIL

4.5 Formato recomendado de flags

  • flag: qc_time_gap, qc_time_duplicate, qc_time_out_of_order, qc_time_offset_suspected, qc_time_drift_suspected
  • severidad: INFO/WARN/ERROR
  • evidencia: gapSeconds, offsetSeconds, driftSecondsPerDay

5. Ejemplos reales (sensores) y cómo se ven en el panel

5.1 Pluviómetro convectivo: pico real vs spike por error

Riesgo: un spike por reset puede parecer “tormentón”. El panel de timestamps ayuda a no culpar al tiempo: si continuidad está OK, mira el sensor; si hay out-of-order o gaps rellenados con 0, primero arregla el pipeline.

Señal de spike típico: salto aislado sin soporte (radar/vecinas) y a veces justo tras reinicio.

5.2 Anemómetro: rachas “desfasadas” por semántica de ventana

Muchas rachas son máximos en ventana (p.ej. 10 min) y la media también es ventana. Si el sistema etiqueta ambos con el mismo timestamp pero con distinta convención (inicio/fin/centro), verás desfase aparente. El panel debe mostrar la definición de period (metadato) para no confundirlo con error temporal.

5.3 Radiación: detector de oro para offset/drift

Si la mini-gráfica de hora del máximo se mueve lenta → drift. Si está fija pero desplazada → UTC/local. Si pega un salto un día → cambio de config o DST mal aplicado.

6. Trampas comunes (y cómo no caer)

  • Rellenar gaps con 0: el panel se ve “bonito” pero la estadística se rompe
  • Guardar en local: DST te mete duplicados/gaps y te arruina diarios
  • Confundir meteorología con fallo temporal: inversiones, brisas o sombras no son timestamps
  • No registrar cambios: sin log de mantenimiento/firmware, no puedes explicar un changepoint

7. Checklist práctico para montar el panel hoy

  1. Define cadencia nominal (p.ej. 60s) y tolerancia
  2. Calcula deltas y métricas: gapRate, duplicateRate, outOfOrderRate
  3. Elige variable reloj (radiación preferida) y calcula maxHour diario
  4. Implementa flags con severidad + evidencia
  5. Muestra 4 tarjetas + mini-gráfica (máximo diario)
  6. Guarda histórico semanal (para ver drift y tendencias)

8. Referencias y lecturas recomendadas

  • Met Office
  • WMO
  • NOAA