-
Lesen Sie mehr über Zeitzonenunterstützung in MySQL , und stellen Sie sicher, dass Ihre MySQL-Datenbank mit aktuellen Zeitzonentabellen konfiguriert ist. Regelmäßig aktualisieren.
-
Ordnen Sie jedem Standort eine benannte IANA/Olson-Zeitzone zu, z. B.
"America/Los_Angeles"
, oder"Europa/London"
. Siehe hier die Liste . Wenn Sie Lat/Lon haben, können Sie die Zeitzone über eine dieser Methoden nachschlagen . -
Verwenden Sie den MySQL-Code <>CONVERT_TZ Funktion zum Konvertieren der aktuellen UTC-Zeit in die spezifische Zone. Beispiel:
CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asia/Tokyo')
-
Verwenden Sie den Wochentag und die Tageszeit des konvertierten Zeit zum Vergleichen mit dem Tag und der Reichweite im Ortseintrag.
Beachten Sie auch, dass andere möglicherweise vorschlagen, nur UTC in der Datenbank zu speichern oder alle Werte in UTC zu konvertieren, bevor sie mit dem "Jetzt" -Wert verglichen werden. Beide Ansätze können in Grenzfällen fehlschlagen, da der UTC-Wochentag nicht unbedingt derselbe Wochentag wie in jeder Zeitzone ist.
Ein weiterer Ansatz, der wird Arbeit, aber aufwändiger, ist es, die spezifischen UTC-Start- und Stoppzeiten für einige Zeit in der Zukunft (zumindest bis zur nächsten, aber vielleicht noch länger) vorzugeben. Dann können Sie diese Liste mit der UTC-Zeit scannen. Dies funktioniert besser im Maßstab, wenn Sie Tausende oder mehr einzelne Einträge überprüfen müssen. Aber bei kleineren Maßstäben lohnt es sich normalerweise nicht.
Ebenso könnten Sie einen Hintergrundprozess haben, der einfach ein "jetzt offen"-Flag für jeden Datensatz setzt, aber er müsste ständig gegen Ihre Datenbank arbeiten, und Sie könnten niemals nach anderen Zeiten als "jetzt" suchen.