Guides

Afficher les bons horaires d'ouverture selon la position du visiteur

« Nous sommes ouverts jusqu'à 18 h » n'est utile que si le visiteur qui le lit sait de quelles 18 h vous parlez. Un visiteur situé dans un autre fuseau horaire que votre entreprise a besoin que cette comparaison soit faite dans sa propre heure locale, et non dans la vôtre.

Obtenir le fuseau horaire du visiteur

Une seule recherche d'IP renvoie directement un champ timezone, ce qui vous donne ce dont vous avez besoin sans appel supplémentaire.

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"
}

Comparer avec vos horaires d'ouverture

Convertissez vos horaires d'ouverture, enregistrés dans le fuseau horaire de votre entreprise, dans le fuseau du visiteur à l'aide de l'identifiant de fuseau horaire que vous venez d'obtenir, puis comparez-les à l'heure locale actuelle du visiteur pour décider d'afficher « ouvert maintenant » ou « fermé », accompagné de l'heure locale à laquelle cet état est affiché.

Un deuxième exemple : une entreprise ayant plusieurs établissements

Une entreprise ayant des établissements dans différentes villes doit consulter les horaires affichés de chaque établissement selon son propre fuseau enregistré, puis comparer chacun séparément au fuseau du visiteur, plutôt que de supposer qu'un seul jeu d'horaires s'applique partout. C'est surtout important lorsqu'un visiteur compare deux établissements sur la même page, car l'un peut apparaître ouvert et l'autre fermé au même instant s'ils se trouvent dans des fuseaux différents ou appliquent différemment l'heure d'été.

Préciser de quel fuseau horaire il s'agit

Plutôt que de convertir en silence en espérant que le visiteur comprenne, affichez clairement les deux informations, par exemple « Actuellement fermé. Ouvre à 9 h, votre heure (Asia/Tokyo). » Être explicite évite la confusion lorsqu'une entreprise opère de part et d'autre d'une frontière où l'heure d'été s'applique d'un côté mais pas de l'autre.

Une erreur courante à éviter

Ne calculez pas la comparaison ouvert ou fermé une seule fois pour mettre ce résultat booléen en cache pendant le reste de la session du visiteur. Une comparaison faite à 5 h 55 de l'après-midi affichera « ouvert » et sera fausse dès 6 h 05 si l'état d'ouverture est mis en cache au lieu d'être recalculé. Mettez en cache l'identifiant de fuseau horaire du visiteur, qui est réellement stable pendant une session, mais recalculez la comparaison ouvert ou fermé à chaque affichage.

Un cas limite : les fuseaux qui n'appliquent pas l'heure d'été

Certaines régions conservent un décalage fixe toute l'année tandis qu'une région voisine change d'heure deux fois par an, ce qui signifie que l'écart entre deux fuseaux n'est pas constant au fil du calendrier. Si votre logique de comparaison code en dur un décalage en heures au lieu de partir de l'identifiant de fuseau horaire et de laisser votre bibliothèque de dates gérer la conversion, elle se désynchronisera précisément pendant les semaines qui entourent un changement d'heure.

Mettre en cache le fuseau, pas l'état d'ouverture

L'identifiant de fuseau horaire du visiteur est stable pendant une session et mérite d'être mis en cache. Le fait que l'entreprise soit ouverte ou non change au cours de la journée : recalculez donc cette comparaison au moment de l'affichage à partir du fuseau mis en cache, plutôt que de mettre en cache l'état ouvert ou fermé lui-même.

Vérifier un moment précis, passé ou futur

Si vous devez connaître le décalage qui était, ou sera, en vigueur à un moment précis plutôt que maintenant, par exemple pour confirmer l'heure réelle, dans le fuseau du client, d'une commande passée hier, /v1/timezone accepte un paramètre time facultatif sous forme d'horodatage Unix, précisément pour ce type de vérification passée ou future.

Le coût en requêtes

Une recherche d'IP par nouvelle session de visiteur suffit pour cette fonctionnalité. Il s'agit d'une seule requête mise en cache pour la durée de la visite, ce qui maintient un site marchand très fréquenté bien en deçà des 2 500 requêtes gratuites par jour incluses avec chaque clé.

Afficher correctement « ouvert maintenant » pour une audience mondiale ne demande qu'une recherche et une simple comparaison d'heures, pas une fonctionnalité compliquée. La documentation de la recherche IPv4 détaille la forme complète de la réponse.