-
Lea acerca de compatibilidad con zonas horarias en MySQL y asegúrese de que su base de datos mysql esté configurada con las tablas de zonas horarias actuales. Actualice periódicamente.
-
Asocie cada ubicación con una zona horaria IANA/Olson con nombre, como
"America/Los_Angeles"
, o"Europe/London"
. Consulte la lista aquí . Si tiene lat/lon, puede buscar la zona horaria a través de uno de estos métodos . -
Utilice MySQL
CONVERT_TZ
función para convertir la hora UTC actual a la zona específica. Por ejemplo,CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asia/Tokyo')
-
Utilice el día de la semana y la hora del día del convertido tiempo para verificar el día y el rango en la entrada de la ubicación.
Además, tenga en cuenta que otros pueden sugerir adoptar el enfoque de almacenar solo UTC en la base de datos, o de convertir todos los valores a UTC antes de compararlos con el valor "ahora". Cualquiera de esos enfoques puede fallar en casos extremos, ya que el día de la semana UTC no es necesariamente el mismo día de la semana que en cada zona horaria.
Otro enfoque que podrá El trabajo, pero requiere más esfuerzo, es predeterminar los tiempos de inicio y fin de UTC específicos para una cierta cantidad de tiempo en el futuro (al menos hasta el siguiente, pero quizás más). Luego puede escanear esta lista con la hora UTC. Esto funciona mejor a escala, cuando tiene miles o más entradas individuales para verificar. Pero a escalas más pequeñas, por lo general no vale la pena los gastos generales.
Del mismo modo, podría tener un proceso en segundo plano que solo establezca un indicador de "ahora abierto" en cada registro, pero tendría que estar trabajando constantemente en su base de datos, y nunca podría verificar otros tiempos que no sean "ahora".