2016-05-23 15 views
0

Ich frage mich, wie man dieses Datumsformat "2016-04-19T03: 17: 38.184 + 00: 00" in PHP erreichen?Welche Art von Datum Zeitformat ist das?

Es ist ein bisschen anders als ISO 8601. Bitte beraten.

http://php.net/manual/en/function.date.php

Dank.

+1

Wenn Sie die Millisekunden nicht brauchen, es ist nur 'date ('c'); '. Wenn Sie dies tun, finden Sie unter http://stackoverflow.com/questions/17909871/getting-date-format-m-d-y-his-u-from-milliseconds für einige ähnliche Beispiele. – Mike

Antwort

1

Es ist unmöglich, date() zu verwenden, um die Millisekunden Teil zu zeigen, weil, aus dem Handbuch:

date() wird immer 000000 erzeugen, da es einen ganzzahligen Parameter nimmt, während Datetime :: Format() Unterstützung tut Mikrosekunden, wenn DateTime mit Mikrosekunden erstellt wurde.

Also ist die einzige Möglichkeit, DateTime zu verwenden und die Mikrosekunden an den Konstruktor zu übergeben. Da wir jedoch nur Millisekunden benötigen, können wir es einfach umrunden und dann die hinteren drei Nullen vom Ende entfernen.

$t = microtime(true); 
$milli = sprintf("%03d",($t - floor($t)) * 1000); 
$d = new DateTime(date('Y-m-d H:i:s.'.$milli, $t)); 

echo $d->format("Y-m-d\TH:i:s."); 
echo substr($d->format("u"), 0, -3); 
echo $d->format('P'); 

Ausgänge:

2016-05-22T22: 41: 57,294 bis 05: 00