-
Přečtěte si o podporě časových pásem v MySQL a ujistěte se, že je vaše databáze mysql nakonfigurována s aktuálními tabulkami časových pásem. Pravidelně aktualizujte.
-
Ke každému místu přiřaďte pojmenované časové pásmo IANA/Olson, například
"America/Los_Angeles"
nebo"Europe/London"
. Viz seznam zde . Pokud máte zeměpisnou šířku/délku, můžete časové pásmo vyhledat pomocí jednoho z těchto způsobů . -
Použijte MySQL
CONVERT_TZ
funkce pro převod aktuálního času UTC na konkrétní zónu. NapříkladCONVERT_TZ(UTC_TIMESTAMP(),'UTC','Asia/Tokyo')
-
Použijte den v týdnu a denní dobu konvertovaného čas na kontrolu oproti dni a rozsahu v zadání místa.
Všimněte si také, že jiní mohou navrhnout použití přístupu pouze ukládání UTC do databáze nebo převedení všech hodnot na UTC před porovnáním s hodnotou „nyní“. Každý z těchto přístupů může v krajních případech selhat, protože den v týdnu UTC nemusí být nutně stejný den v týdnu jako v každém časovém pásmu.
Jeden další přístup, který bude práce, ale vyžaduje více úsilí, je předurčit konkrétní časy spouštění a zastavení UTC na určitou dobu v budoucnu (alespoň do dalšího, ale možná i dále). Poté můžete tento seznam naskenovat s časem UTC. To funguje lépe v měřítku, když máte tisíce nebo více jednotlivých položek ke kontrole. Ale v menších měřítcích se to obvykle nevyplatí.
Podobně můžete mít proces na pozadí, který pouze nastaví příznak „nyní otevřeno“ u každého záznamu, ale musel by neustále pracovat s vaší databází a nikdy byste nemohli kontrolovat jiné časy než „nyní“.