-
Przeczytaj o obsługi stref czasowych w MySQL i upewnij się, że Twoja baza danych mysql jest skonfigurowana z aktualnymi tabelami stref czasowych. Aktualizuj regularnie.
-
Powiąż każdą lokalizację z nazwaną strefą czasową IANA/Olson, taką jak
"America/Los_Angeles"
lub„Europa/Londyn”
. Zapoznaj się z listą tutaj . Jeśli masz lat/lon, możesz sprawdzić strefę czasową za pomocą jednej z tych metod . -
Użyj
CONVERT_TZ funkcja konwersji aktualnego czasu UTC na konkretną strefę. Na przykładCONVERT_TZ(UTC_TIMESTAMP(),'UTC','Azja/Tokio')
-
Użyj dnia tygodnia i pory dnia konwertowanego czas na sprawdzenie dnia i zakresu we wpisie lokalizacji.
Należy również zauważyć, że inni mogą sugerować podejście polegające na przechowywaniu tylko czasu UTC w bazie danych lub konwersji wszystkich wartości na czas UTC przed porównaniem z wartością „teraz”. Każde z tych podejść może zawieść w skrajnych przypadkach, ponieważ dzień tygodnia UTC niekoniecznie jest tym samym dniem tygodnia, co w każdej strefie czasowej.
Jeszcze jedno podejście, które będzie Praca, ale wymaga więcej wysiłku, polega na ustaleniu z góry określonych czasów rozpoczęcia i zakończenia UTC na pewien czas w przyszłości (przynajmniej do następnego, ale być może dalej). Następnie możesz zeskanować tę listę z czasem UTC. Działa to lepiej na dużą skalę, gdy masz do sprawdzenia tysiące lub więcej pojedynczych wpisów. Ale w mniejszej skali zwykle nie jest to warte kosztów ogólnych.
Podobnie, możesz mieć proces w tle, który po prostu ustawia flagę „teraz otwarte” dla każdego rekordu, ale musiałby on stale działać z bazą danych i nigdy nie mógłbyś sprawdzić innych czasów niż „teraz”.