Controla el uso de tu clave antes de alcanzar un límite
Vigilar las cabeceras de cuota sobre la marcha te indica cuándo te acercas a un límite, mucho antes de que se rechace realmente una solicitud.
Una marca de tiempo mostrada en la zona horaria de tu servidor solo se lee correctamente para quien esté en esa misma zona, lo que, en un sitio con visitantes de cualquier lugar, es prácticamente nadie.
Una consulta de IP devuelve directamente un campo timezone, que te da el identificador necesario para localizar cualquier marca de tiempo de la página.
GET /v1/ip?ip=203.0.113.77{
"status": "ok",
"ip": "203.0.113.77",
"version": 4,
"found": true,
"country": "Brazil",
"country_code": "BR",
"region": "Rio de Janeiro",
"city": "Rio de Janeiro",
"postcode": "20040",
"lat": -22.9068,
"lon": -43.1729,
"timezone": "America/Sao_Paulo",
"asn": 5566,
"org": "Example ISP"
}Guarda todas las marcas de tiempo en tu base de datos en UTC, como siempre, y conviértelas a la zona local del visitante solo en el momento de mostrarlas, en el servidor, con el identificador de zona horaria que consultaste. Como este sitio lo renderiza todo en el servidor, sin JavaScript en el cliente, tanto la conversión como el formato se aplican antes de enviar la página, no después en el navegador.
local_time = convert_to_timezone(stored_utc_timestamp, "America/Sao_Paulo")Una página de confirmación de pedido que muestra las horas de «realizado a las» y «previsto para» es un buen ejemplo de dónde esto importa más allá de un simple reloj en la cabecera de la página. Convertir ambas marcas de tiempo con la misma zona del visitante, en lugar de dejar una en la hora del servidor por descuido, mantiene coherentes las dos cifras y evita la situación confusa en la que la hora de entrega prevista parece anterior a la hora del pedido porque una se convirtió y la otra no.
La zona horaria y el formato están relacionados, pero son decisiones distintas. Un visitante de una zona que suele usar el reloj de 24 horas y el orden día-mes-año para las fechas se beneficia de un formato acorde, no solo de un valor de hora desplazado escrito en un formato que sigue pareciendo extranjero. Combina el country_code de la misma consulta de IP con una pequeña tabla de formatos si quieres ir más allá de ajustar la hora.
No implementes la conversión como un desfase horario fijo calculado una vez y aplicado a todas las marcas de tiempo a partir de entonces. El desfase real de una zona respecto a UTC puede cambiar a lo largo del año con el horario de verano, así que una marca de tiempo convertida correctamente en una estación puede quedar desfasada una hora en otra si el código aplica un número de desfase almacenado en lugar de convertir mediante el propio identificador de zona horaria con una biblioteca de fecha y hora adecuada.
No todas las zonas horarias tienen un desfase de horas completas respecto a UTC. Algunas tienen un desfase de 30 o 45 minutos en lugar de una hora completa. Usar una biblioteca de fechas que entienda el identificador completo de zona horaria IANA, en lugar de un valor de desfase simplificado solo en horas, lo gestiona correctamente sin ningún código para casos especiales por tu parte. Los campos utc_offset y abbreviation de la documentación de la consulta de zona horaria son útiles si quieres mostrar el desfase de forma explícita junto a una hora convertida.
Consulta la zona horaria una vez por sesión de visitante y reutilízala para cada marca de tiempo que se muestre en cada página durante esa visita, en lugar de llamar de nuevo a la API por cada fecha mostrada, ya que la zona en sí no cambia a mitad de la sesión.
Una consulta por cada sesión nueva cubre la localización de todas las marcas de tiempo mostradas durante esa visita, una sola solicitud sin importar cuántas fechas aparezcan en la página. Así, incluso un sitio con mucho contenido se mantiene holgadamente dentro de las 2.500 solicitudes gratuitas al día incluidas con cada clave.
Mostrar bien la hora local y el formato de fecha en todo un sitio se reduce a una consulta por sesión y a un renderizado coherente en el servidor a partir de ahí. La documentación de la consulta de IPv4 y la documentación de la consulta de zona horaria cubren ambas formas de obtener la zona.