-
Leia sobre suporte a fuso horário no MySQL , e certifique-se de que seu banco de dados mysql esteja configurado com as tabelas de fuso horário atuais. Atualize regularmente.
-
Associe cada local a um fuso horário IANA/Olson nomeado, como"America/Los_Angeles"
, ou"Europa/Londres"
. Consulte a lista aqui . Se você tiver lat/lon, poderá pesquisar o fuso horário por meio de um desses métodos .
-
Use oCONVERT_TZ
função para converter a hora UTC atual para a zona específica. Por exemplo,CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Ásia/Tóquio')
-
Use o dia da semana e a hora do dia do convertido hora de verificar o dia e o intervalo na entrada do local.
Além disso, observe que outros podem sugerir a abordagem de armazenar apenas o UTC no banco de dados ou converter todos os valores em UTC antes de comparar com o valor "agora". Qualquer uma dessas abordagens pode falhar em casos extremos, pois o dia da semana UTC não é necessariamente o mesmo dia da semana de cada fuso horário.
Uma outra abordagem que vai trabalho, mas exige mais esforço, é predeterminar os horários de início e término UTC específicos por algum período de tempo no futuro (pelo menos para o próximo, mas talvez mais). Então você pode verificar esta lista com a hora UTC. Isso funciona melhor em escala, quando você tem milhares ou mais entradas individuais para verificar. Mas em escalas menores, geralmente não vale a pena a sobrecarga.
Da mesma forma, você poderia ter um processo em segundo plano que apenas define um sinalizador "agora aberto" em cada registro, mas teria que estar constantemente trabalhando em seu banco de dados e você nunca poderia verificar outros momentos além de "agora".