Ich denke, dass Sie mit GMT (UTC) auf dem richtigen Weg sind. Verwenden Sie UTC als Ihre kanonische Zeitstempel-Darstellung, wenn Sie ein Ereignis haben, das bei einem bestimmten Zeitpunkt auftritt (oder aufgetreten ist). UTC ist von DST-Regeln nicht betroffen und dient daher als eine großartige, eindeutige Point-in-Time-Repräsentation.
Sobald Sie eine Strategie für eine eindeutige Darstellung des Ereignisses Datum/Zeit haben, dann können Sie ziemlich leicht lösen das Problem der lokalisierende Datum/Zeit basierend auf welcher Zeitzone ist am sinnvollsten von Ihren Benutzern zu akzeptieren (oder zu ihnen anzeigen). Sie müssen wahrscheinlich auch die Zeitzone des Ereignisses kennen und speichern, aber da Sie das tatsächliche Ereignisdatum/die Ereigniszeit in UTC speichern, können Sie es ziemlich einfach in der Zeitzone des Benutzers lokalisieren, wenn dies relevanter ist zu ihnen in jedem gegebenen Anwendungsfall.
Diese Lokalisierung wird normalerweise mit einer Zeitzonenbibliothek durchgeführt, die entweder von Ihrem SDK bereitgestellt wird (z. B. Java hat java.util.Calendar) oder als Erweiterung eines Drittanbieters (z. B. Python hat pytz). Ich bin sicher, PHP hat ein Äquivalent, aber ich bin nicht so vertraut mit seinen Bibliotheken.
Diese Bibliotheken werden normalerweise auf einer Regeldatenbank wie der Olson Zoneinfo DB aufgebaut. Diese Regeln können sich sehr häufig ändern, so dass Sie immer über Aktualisierungen der zugrunde liegenden Datenbank informiert werden müssen, insbesondere wenn Sie eine wirklich globale Anwendung entwickeln. Sie können jedoch die esoterischen, nebulösen Zeitzonenregeln externalisieren, so dass Sie die Regeldatenbank (theoretisch) aktualisieren können, ohne eine größere Aktualisierung Ihrer Laufzeitumgebung durchführen oder wichtige Codeänderungen vornehmen zu müssen, wenn die DST-Regeln in a bestimmte Bereichsänderung.
Es ist nicht das einfachste Problem in der Welt und stinkt, dass wir es tun müssen, aber sobald Sie es ein paar Mal getan haben und die Trennung der Bedenken zwischen speichern genaue Punkt-in-Zeit-Darstellung vs. die Sorge der Lokalisierung, dann wird es zur zweiten Natur.
Müssen Sie es zur genauen Zeit oder zu jeder Zeit ausführen, solange es regelmäßig in einem Intervall ausgeführt wird? – dusoft
so Wochentag (nicht Tag, Monat und Jahr), Zeitzone (ppl in verschiedenen Zeitzonen Vergleich Zeitplan?), Und dst? Dies ist in MySQL gespeichert? – OIS