PHP date () gibt das Format yyyy-mm-ddThh: mm: ss.uZ zurück

9

Ich habe die folgenden Fragen / Antworten ausgecheckt: Wie bekomme ich das Format? von "JJJJ-MM-TTHH: mm: ss.fffZ" in PHP? Die Antworten enthalten Links zu Microsoft-Dokumentation, um Daten zu formatieren, aber diese funktionieren nicht in PHP.

Die beste Antwort schlägt vor

date('Y-m-dTH:i:s.uZ') //for the current time

Dies wird ausgegeben 2013-03-22EDT12:56:35.000000-1440016

Hintergrund

Ich arbeite mit einer API, die einen Zeitstempel im obigen Format benötigt. Die API befindet sich in Großbritannien (GMT) und mein Server befindet sich in Australien (AEST).

Im Beispiel in der API-Dokumentation wird nach dem Datum in diesem Format gefragt:

2011-07-15T16:10:45.555Z

Am nächsten komme ich mit dem Datum ('c'), das folgendes ausgibt:

2014-07-03T16:41:59+10:00//Notice the Z is replaced with a time diff in hours

Ich glaube, das 'Z' bezieht sich auf eine Zone, wird aber in der PHP-Dokumentation nicht erwähnt.

Leider, wenn ich dieses Format posten, liest die API die Zeit und nimmt 10 Stunden frei. Ich bekomme einen Fehler, der besagt, dass das Datum nicht in der Vergangenheit liegen kann (da es gegen die lokale Zeit in Melbourne überprüft wird, aber eine Zeit 10 Stunden früher gesehen wird).

Ich habe versucht, den Zeitstempel zu trimmen, um die +1000 zu entfernen, die die API akzeptiert, aber der Datensatz wird so angezeigt, wie er 10 Stunden zuvor erstellt wurde.

Ich muss den benötigten Zeitstempel anpassen, aber ich finde keine Möglichkeit, die obige Ausgabe in PHP für Melbourne, Australien zu replizieren. Jede Hilfe wird sehr geschätzt.

Erste Frage zu SO also lass mich wissen, wie ich gegangen bin

    
Patrick 07.07.2014, 07:45
quelle

1 Antwort

4

Z steht für die Zeitzone UTC und ist in ISO-8601 definiert, was Ihre gewünschte Ausgabe ist Format, erweitert um den Millisekunden-Teil.

Bevor Sie die Zeit ausgeben, müssen Sie lokale Zeiten in UTC übertragen:

%Vor%

Dann können Sie die folgende Formatzeichenfolge verwenden:

%Vor%

Beachten Sie, dass ich den Millisekunden-Teil auf Null gesetzt habe und die Sonderzeichen T und Z im Formatmuster erhalten haben.

    
hek2mgl 07.07.2014, 07:58
quelle

Tags und Links