Ich habe einen WordPress-Cron-Job, der regelmäßig eine E-Mail sendet und den Zeitstempel speichert, als er als Option gesendet wurde, und ich möchte ein Datum auf einer Einstellungsseite anzeigen. So etwas wie "Die letzte E-Mail wurde am 'x' gesendet". Ich bin an der Westküste der USA, unsere Zeit ist also derzeit sieben Stunden vor UTC.
Meine erwartete Ausgabe von date_i18n (), die den Zeitstempel übergibt, wäre ein lokal formatiertes Datum mit einer siebenstündigen Anpassung von UTC. Es wird jedoch die Uhrzeit in UTC zurückgegeben. Selbst der Versuch, die aktuelle Zeit zu ermitteln, liefert nicht die erwartete Ausgabe.
Beispiel: echo date_i18n('F d, Y H:i');
Gibt den 05. April 2013 um 11:36 Uhr wie erwartet aus, aber echo date_i18n('F d, Y H:i',time());
den 05. April 2013 um 18:36 Uhr.
Ist das beabsichtigt? Wie kann ich ein lokal formatiertes Datum von einem bereits vorhandenen Zeitstempel zurückgeben? Vielen Dank für jede Hilfe.
Antworten:
Ich weiß, ich bin drei Monate zu spät, aber die Funktion, die Sie hier wollen, ist WordPress
get_date_from_gmt()
.Die Funktion akzeptiert ein GMT / UTC-Datum im
Y-m-d H:i:s
Format als ersten Parameter und Ihr gewünschtes Datumsformat als zweiten Parameter. Das Datum wird in die lokale Zeitzone konvertiert, die auf dem Einstellungsbildschirm festgelegt wurde.Anwendungsbeispiel:
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
quelle
echo get_date_from_gmt ( date( 'Y-m-d H:i:s', $my_timestamp ), get_option('date_format') . ' - '. get_option('time_format') );
Aus dem Kodex :
Versuche dies:
Dies setzt das PHP-Standarddatum für die Dauer des Skripts auf die Option timezone_string von WP, falls verfügbar.
quelle
date_i18n('F d, Y H:i', $your_timestamp)
nichtecho date_i18n('F d, Y H:i',1365194723)
Anweisung oben in der Datei index.php ausgeführt wurde. Dadurch erhalte ich UTC-Zeit und keine Zeit an der Westküste der USA.date_i18n($format, $timestamp)
Formate entsprechend dem Gebietsschema, aber nicht der Zeitzone.get_date_from_gmt($datestring, $format)
Formate entsprechend der Zeitzone, aber nicht dem Gebietsschema. Um die Formatierung sowohl für die Zeitzone als auch für das Gebietsschema zu erhalten, gehe ich wie folgt vor:Beispielprogramm:
Ausgabe für die Zeitzone von Los Angeles:
Verweise:
DateTimeZone
docs in php.netDateTime
docs in php.net, einschließlichsetTimestamp
,getTimestamp
undformat
date_i18n
Dokumentequelle
Fügen Sie Ihrem Zeitstempel einen Zeitzonenversatz hinzu.
oder besser;
quelle
Konvertieren von UTC in Zeichenfolge in Zeitzone, Sprache und Format in den Optionen von WordPress
Ich habe eine gut dokumentierte Funktion erstellt, die eine Datums- / Uhrzeitzeichenfolge in UTC in eine hübsche Datums- / Uhrzeitzeichenfolge in der richtigen Sprache, dem richtigen Format und der richtigen Zeitzone konvertiert. Fühlen Sie sich frei, es zu kopieren.
Zum Beispiel würde die Übergabe
"2019-05-30 18:06:01"
(in UTC) zurückkehren"Maggio 30, 2019 10:06 am"
.Verweise:
get_date_from_gmt
DokumenteDateTimeZone
docs in php.netDateTime
docs in php.net, einschließlichgetTimestamp
date_i18n
Dokumentedate_default_timezone_set( 'UTC' );
Denken Sie daran, dass WordPress unabhängig von der Zeitzone ausgeführt wird, die der Administrator in der Benutzeroberfläche ausgewählt hat. Denken Sie also daran, wenn Sie das Verhalten der integrierten PHP-Funktionen bestimmen. Siehedate_default_timezone_set
docs in php.net.quelle
Das scheint auf meiner Maschine zu funktionieren (keines der anderen Dinge hat funktioniert):
Originalcode: https://www.simonholywell.com/post/2013/12/convert-utc-to-local-time/
Es wird nicht verwendet,
date_l18n()
aber ich denke, man könnte es später verwenden ...quelle