Guías

Muestra el horario comercial correcto según la ubicación del visitante

"Abrimos hasta las 6 de la tarde" solo es útil si el visitante que lo lee sabe a qué 6 de la tarde te refieres. Un visitante en una zona horaria distinta de la de tu negocio necesita que esa comparación se haga en su propia hora local, no en la tuya.

Obtener la zona horaria del visitante

Una sola consulta de IP devuelve directamente un campo timezone, lo que te da lo que necesitas sin una llamada aparte.

GET /v1/ip?ip=203.0.113.44
{
  "status": "ok",
  "ip": "203.0.113.44",
  "version": 4,
  "found": true,
  "country": "Japan",
  "country_code": "JP",
  "region": "Tokyo",
  "city": "Tokyo",
  "postcode": "100-0001",
  "lat": 35.6762,
  "lon": 139.6503,
  "timezone": "Asia/Tokyo",
  "asn": 2345,
  "org": "Example Telecom"
}

Comparar con tu horario comercial

Convierte tu propio horario comercial, guardado según la zona horaria de tu negocio, a la zona del visitante usando el identificador de zona horaria que acabas de obtener, y luego compáralo con la hora local actual del visitante para decidir si mostrar "abierto ahora" o "cerrado", junto con la hora local de referencia que estás mostrando.

Un segundo ejemplo: un negocio con más de un local

Un negocio con locales en distintas ciudades debería consultar el horario publicado de cada local según su propia zona guardada y luego comparar cada uno por separado con la zona del visitante, en lugar de suponer que un único horario se aplica en todas partes. Esto importa sobre todo cuando un visitante compara dos locales en la misma página, ya que uno podría aparecer abierto y el otro cerrado exactamente en el mismo momento si están en zonas distintas o aplican el horario de verano de forma diferente.

Indicar claramente a qué zona horaria te refieres

En lugar de convertir en silencio y esperar que el visitante lo entienda, muestra ambos datos con claridad, algo como "Cerrado ahora. Abre a las 9 de la mañana, tu hora (Asia/Tokyo)." Ser explícito evita confusiones cuando un negocio opera a ambos lados de una frontera que cambia con el horario de verano en un lado pero no en el otro.

Un error habitual que debes evitar

No calcules la comparación de abierto o cerrado una sola vez para guardar en caché ese resultado booleano durante el resto de la sesión del visitante. Una comparación hecha a las 5:55 p. m. dirá "abierto" y seguirá siendo errónea a las 6:05 p. m. si el estado de apertura se guarda en caché en lugar de recalcularse. Guarda en caché el identificador de zona horaria del visitante, ya que es realmente estable durante una sesión, pero vuelve a calcular la comparación real de abierto o cerrado en cada renderizado.

Un caso límite: zonas que no aplican el horario de verano

Algunas regiones mantienen un desfase fijo todo el año mientras una región vecina cambia dos veces al año, lo que significa que la diferencia entre dos zonas no es constante a lo largo del calendario. Si tu lógica de comparación fija un desfase en horas en el código en lugar de partir del identificador de zona horaria y dejar que tu biblioteca de fechas haga la conversión, se desincronizará justo en las semanas cercanas a un cambio de horario de verano.

Guardar en caché la zona, no el estado de apertura

El identificador de zona horaria del visitante es estable durante una sesión y vale la pena guardarlo en caché. Si el negocio está abierto o no cambia a lo largo del día, así que vuelve a calcular esa comparación al renderizar usando la zona en caché, en lugar de guardar en caché el propio estado de abierto o cerrado.

Comprobar un momento concreto pasado o futuro

Si necesitas saber cuál era, o cuál será, el desfase en un momento concreto y no ahora mismo, por ejemplo para confirmar a qué hora se hizo realmente en la zona del cliente un pedido realizado ayer, /v1/timezone acepta un parámetro opcional time como marca de tiempo Unix precisamente para ese tipo de comprobación histórica o futura.

Coste en solicitudes

Una consulta de IP por cada nueva sesión de visitante basta para esta función. Es una sola solicitud guardada en caché durante la visita, lo que mantiene una tienda online con mucho tráfico holgadamente dentro de las 2.500 solicitudes gratuitas al día incluidas con cada clave.

Mostrar bien "abierto ahora" a una audiencia global es cuestión de una consulta y una comparación horaria sencilla, no de una función complicada. La documentación de consulta IPv4 muestra la forma completa de la respuesta.