it-swarm.com.de

Datum, Uhrzeit und Zeitzonen

Ich bin ein bisschen verwirrt über die Verwendung von Datums-/Uhrzeitangaben zusammen mit Zeitzonen in WordPress. Ich habe folgende Fragen:

  1. Was ist der Zweck der Zeitzoneneinstellung im Abschnitt Admin -> Einstellungen?

  2. Angenommen, die aktuelle Zeit in GMT ist 20:00 Uhr und ich bin in EST (also ist es 16:00 Uhr EST-Zeit). Wie wird die Zeit des Blogs gespeichert?

  3. Angenommen, ein Leser liest den Beitrag und befindet sich in der Türkei. Ihre Ortszeit ist also 23:00 Uhr. Sehen sie 23:00 Uhr als Postzeit?

  4. Angenommen, ich verwende einen benutzerdefinierten Beitragstyp und habe ein zusätzliches Datums-/Zeitfeld für andere Datumsinformationen. Wie stelle ich sicher, dass sich das benutzerdefinierte Datumsfeld wie das WordPress-Feld verhält?

Ich entschuldige mich für diese grundlegenden Fragen, aber ich brauche dringend Ihre Hilfe, um diese zu erklären.

2
Greeso

Was ist der Zweck der Zeitzoneneinstellung im Abschnitt Admin -> Einstellungen?

Da WordPress die Zeitzone selbst verwaltet (getrennt von der nativen PHP -Funktionalität), werden die vorgenommenen Einstellungen und das Ergebnis in den Optionen gespeichert.

Immer wenn etwas passiert, das mit Zeitzonen funktioniert, wird die Zeitzoneneinstellung abgerufen und für Berechnungen/Ausgaben verwendet.

Angenommen, die aktuelle Zeit in GMT ist 20:00 Uhr und ich bin in EST (also ist es 16:00 Uhr EST-Zeit). Wie wird die Zeit des Blogs gespeichert?

Es gibt zwei Datumsfelder in der Datenbank für jeden Beitrag. Beide speichern Datum ohne Zeitzoneninformationen, post_date befindet sich vermutlich in der aktuellen Zeitzoneneinstellung und post_date_gmt in UTC.

Leider basiert ein Großteil des WP -Codes auf post_date one, was zu zahlreichen Fehlern führt. Wenn zum Beispiel die Zeitzoneneinstellung geändert wird haben alle früheren Beiträge jetzt eine falsche Zeit, da sie in einer Zeitzone gespeichert wurden von der aktuellen Zeitzone abweichen .

Angenommen, ein Leser liest den Beitrag und befindet sich in der Türkei. Ihre Ortszeit ist also 23:00 Uhr. Sehen sie 23:00 Uhr als Postzeit?

Nein, WP verarbeitet und gibt Zeiten serverseitig im Kontext seiner Einstellungen aus. Alle clientseitigen Einstellungen sind irrelevant, sofern sie nicht absichtlich implementiert wurden, was relativ selten vorkommt.

Angenommen, ich verwende einen benutzerdefinierten Beitragstyp und habe ein zusätzliches Datums-/Zeitfeld für andere Datumsinformationen. Wie stelle ich sicher, dass sich das benutzerdefinierte Datumsfeld wie das WordPress-Feld verhält?

Tu nicht . So wie es WP tut, ist es ein sehr altes und sehr benutzerdefiniertes Chaos mit einer großen Anzahl von Fehlern.

Jede saubere Lösung sollte mit einer eindeutigen Datenspeicherung wie Unix-Zeitstempeln arbeiten. Die Auswahl hängt stark davon ab, welche Informationen benötigt werden und ob die Lesbarkeit auf Speicherebene wichtig ist.

1
Rarst

Erstens: Zweck der Zeitzoneneinstellung im Abschnitt Admin -> Einstellungen?
Zwei: Wie wird die Zeit des Blogs gespeichert?

Verwenden Sie zum Einstellen Ihrer Ortszeit die wp-admin "Einstellungen - Zeitzone. In einem Kommentar heißt es:"Wähle eine Stadt in derselben Zeitzone wie du."Für jeden Blogpost gibt es zwei Felder in der Datenbank: post_date und post_date_gmt. Wenn Sie also einen Beitrag oder einen Entwurf eines Beitrags speichern, nimmt dies sowohl die Zeit in Anspruch - die Ortszeit als auch die GMT. Die Ortszeit (post_date) wird durch die Einstellung generiert, die Sie in den Einstellungen - Zeitzone vorgenommen haben.

Drei: Sehen die Benutzer ihre Ortszeit in der Nachzeit?

Da der Beitrag mit beiden Uhrzeiten gespeichert wird (UTC &IhreOrtszeit), wird der Beitrag mit dem Datum und der Uhrzeit von Ihnen angezeigt, nicht mit deren, wenn Sie dies in Ihren Einstellungen tun.

Viertens: Wie stelle ich sicher, dass sich das benutzerdefinierte Datumsfeld wie das WordPress-Feld verhält?

Wenn Ihr benutzerdefiniertes Feld einfach <input type="date"/> lautet, funktioniert es hoffentlich mit Ihrer Ortszeit. Wenn dies <input type="datetime"/> ist, wird eine UTC-Zeit generiert. Wenn dies <input type="datetime-local"/> ist, können Sie Ihre lokale Zeit auswählen. Aber für mich sind die beiden letzten Optionen gleich.
Und für Ihr Verständnis: Ein benutzerdefiniertes Feld funktioniert wie ein string . Was auch immer Sie in das Feld eingeben, es ist das, was Sie daraus erhalten. Stellen Sie einfach sicher, dass das Ding genau das ist, was Sie auf dem Feld haben möchten. Es wird dasselbe zurückgeben. ( Weitere Informationen zu benutzerdefinierten WordPress-Feldern )

2
Mayeenul Islam