-
Leggi il supporto del fuso orario in MySQL e assicurati che il tuo database mysql sia configurato con le tabelle dei fusi orari correnti. Aggiorna regolarmente.
-
Associa ogni località a un fuso orario IANA/Olson denominato, ad esempio
"America/Los_Angeles"
o"Europe/London"
. Fare riferimento a l'elenco qui . Se hai lat/lon, puoi cercare il fuso orario tramite uno di questi metodi . -
Usa MySQL
CONVERT_TZ
funzione per convertire l'ora UTC corrente nella zona specifica. Ad esempio,CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asia/Tokyo')
-
Usa il giorno della settimana e l'ora del convertito tempo per controllare il giorno e l'intervallo nella voce della posizione.
Inoltre, tieni presente che altri potrebbero suggerire di adottare l'approccio di memorizzare solo UTC nel database o di convertire tutti i valori in UTC prima di confrontarli con il valore "adesso". Entrambi questi approcci possono fallire nei casi limite, poiché il giorno della settimana UTC non è necessariamente lo stesso giorno della settimana di ogni fuso orario.
Un altro approccio che farà lavoro, ma richiede uno sforzo maggiore, consiste nel predeterminare gli orari di inizio e fine UTC specifici per un certo periodo di tempo in futuro (almeno per il prossimo, ma forse oltre). Quindi puoi scansionare questo elenco con l'ora UTC. Funziona meglio su larga scala, quando hai migliaia o più voci individuali da controllare. Ma su scale più piccole, di solito non vale la spesa.
Allo stesso modo, potresti avere un processo in background che imposta semplicemente un flag "ora aperto" su ogni record, ma dovrebbe funzionare costantemente sul tuo database e non potresti mai controllare altre volte oltre a "adesso".