-
Läs om tidszonsstöd i MySQL , och se till att din mysql-databas är konfigurerad med aktuella tidszonstabeller. Uppdatera regelbundet.
-
Associera varje plats med en namngiven IANA/Olson-tidszon, till exempel
"America/Los_Angeles"
, eller"Europa/London"
. Se listan här . Om du har lat/lon kan du slå upp tidszonen via en av dessa metoder . -
Använd MySQL CONVERT_TZ funktion för att konvertera den aktuella UTC-tiden till den specifika zonen. Till exempel,
CONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asien/Tokyo')
-
Använd veckodag och tid på dagen för den konverterade dags att kontrollera dagen och intervallet i platsens post.
Observera också att andra kan föreslå att man bara lagrar UTC i databasen, eller att konvertera alla värden till UTC innan man jämför med "nu"-värdet. Båda dessa tillvägagångssätt kan misslyckas i edge-fall, eftersom UTC-veckodagen inte nödvändigtvis är samma veckodag som i varje tidszon.
En annan metod som kommer arbete, men kräver mer ansträngning, är att förutbestämma de specifika UTC-start- och stopptiderna för en viss tid i framtiden (åtminstone till nästa, men kanske längre). Sedan kan du skanna den här listan med UTC-tiden. Detta fungerar bättre i skala när du har tusentals eller fler enskilda poster att kontrollera. Men i mindre skalor är det vanligtvis inte värt omkostnader.
På samma sätt kan du ha en bakgrundsprocess som bara ställer in en "nu öppen"-flagga på varje post, men den måste hela tiden fungera mot din databas, och du kan aldrig leta efter andra tider än "nu".