Ir al contenido principal
14 días de prueba gratis

Ingeniería

Una página de agenda tiene un instante y muchos relojes

Casi todo fallo de agenda es el mismo fallo: alguien guardó lo que decía el reloj en vez de lo que ocurrió. El momento es el hecho, la hora es una etiqueta, y una página de agenda tiene que construirse sobre eso o se equivocará dos veces al año.

Por Equipo Komplian5 min de lectura

Hay una clase de fallo que solo aparece semanas después, en un ticket de soporte, y que siempre suena igual: el cliente dice que reservó a las cuatro y el negocio dice que a las cuatro no había nadie. Los dos dicen la verdad.

Casi siempre es la misma causa. Alguien guardó lo que decía el reloj en vez de lo que ocurrió.

El instante es el hecho

Una cita es un momento en el tiempo. Ese momento es el mismo para todos: el negocio en Madrid, el cliente en Bogotá y el servidor de calendario en medio se refieren a un solo instante.

"16:00" no es ese momento. Es una etiqueta que le pone quien mira, y miradores distintos le ponen etiquetas distintas al mismo instante. 2026-09-14T14:00:00Z es un hecho. "14 de septiembre a las 16:00" es un hecho más una suposición no dicha sobre quién lo lee.

Todo lo demás sale de tomarse eso en serio:

  • Los huecos viajan como instantes. La disponibilidad se calcula en la zona del negocio, porque ahí viven los horarios de apertura, pero lo que sale del servidor es un instante.
  • La zona que elige el visitante solo cambia la etiqueta. Nunca cambia qué instante se reserva. Eso es lo que hace seguro ofrecer la lista completa de zonas.
  • La conversión ocurre en el borde, una vez. En el momento en que se escribe una hora local en la base de datos, el hecho ha quedado sustituido por una opinión.

Dónde muerde de verdad: agrupar por día

El fallo sutil no es mostrar una hora. Es mostrar un día.

Un negocio de Madrid abre a las 09:00. Ese hueco son las 07:00 UTC. Para un cliente en Ciudad de México es la 01:00, de la noche anterior. Si el calendario agrupa los huecos por el día en que caen en la zona del negocio, ese cliente ve un hueco archivado en martes que, para él, es la noche del lunes. Pulsa martes y no encuentra nada, o peor: reserva lo que cree que es el martes por la mañana y se presenta un día tarde.

Así que la clave del día hay que calcularla en la zona que se está mostrando, no en la que se generaron los huecos. Es una línea, y es la diferencia entre un calendario que funciona fuera de tu país y uno que calladamente no.

La confirmación tiene que coincidir con la página

Alguien elige las 16:00 porque es lo que decía la página. Un minuto después llega un correo que dice las 10:00, porque el correo se escribió en la zona del negocio.

Técnicamente no hay nada mal. El instante es el mismo. Pero el cliente tiene ahora dos horas distintas para una sola cita y ninguna forma de saber cuál vale, y cada una de esas se convierte en una conversación de soporte o en alguien que no aparece.

La zona que estaba leyendo el visitante tiene que viajar con la reserva, como cualquier otro dato de ella, y la confirmación tiene que escribirse en esa zona. Es un campo del envío, no algo que deducir después.

Lee la lista de zonas, no la escribas

Las reglas horarias cambian. Los gobiernos mueven las fechas del horario de verano, lo suprimen y de vez en cuando cambian de huso, casi siempre con pocos meses de aviso. Una tabla de zonas empotrada en una aplicación es correcta el día que sale y está mal en algún sitio antes del año.

Todo entorno moderno expone la lista del propio sistema. Leerla significa que la aplicación hereda las actualizaciones del sistema operativo en vez de mantener una copia que envejece.

Donde esa lista no exista, la alternativa honesta no es adivinar las zonas del mundo. Son las dos únicas que le importan a la página: la del visitante y la del negocio.

La que te va a sorprender

Un apunte de producción, porque cuesta un día encontrarlo y cinco minutos arreglarlo.

Formatear una hora en formato de 24 horas no es igual en todas partes. En ciertos entornos y configuraciones regionales, la medianoche se formatea como hora 24 en vez de 00 cuando se desactiva el reloj de 12 horas. Una página que analiza su propia salida formateada, o que la compara con un rango, hace algo raro exactamente una hora al día.

La lección general es la concreta: una hora formateada es salida, nunca entrada. Todo lo que haya que comparar, ordenar o guardar debería trabajar con el instante, no con la cadena que produjo un formateador.

Resumen

  • Guarda y transmite instantes. Pinta etiquetas.
  • Agrupa por día en la zona que se muestra, no en la zona de la que vienen los datos.
  • Lleva la zona del visitante con la reserva para que la confirmación no pueda contradecir a la página.
  • Coge la lista de zonas de la plataforma, y cae a las dos zonas que la página necesita de verdad.
  • Nunca analices una cadena que produjo un formateador. Es salida.

Si un sistema de agenda alguna vez se ha desviado una hora o un día con un cliente, la respuesta está aquí.

Seguir leyendo

Todos los artículos

¿Sigues usando CRM, inbox e IA por separado?

Komplian reúne todo en un solo espacio de trabajo AI-Native.