2016-07-15 2 views
-1

Ich habe eine Funktion erstellt und es gibt ein Datum wie folgt zurück: 2016-07-15T10: 10: 52. 031.563 +00: 003 Ziffern für Millisekunden in DateTime

Es ist in Ordnung, aber das Problem ist für miliseconds Ziffern. Wie entferne ich die 3 letzten Ziffern? Ich brauche nur 3 Einsen.

private function getFormattedDate($time = 'now'){ 
    $t = microtime(true); 
    $micro = sprintf("%06d",($t - floor($t)) * 1000000); 
    $d = new DateTime(date('Y-m-d H:i:s.'.$micro, $t)); 
    $d->modify($time); 

    return $d->format('Y-m-d\Th:i:s.uP'); // note at point on "u" 
    } 

Antwort

2

Der Modifikator u gibt immer sechs Ziffern zurück. Quoting the manual:

Mikrosekunden (hinzugefügt in PHP 5.2.2). Beachten Sie, dass date() immer 000000 generiert, da es einen Integer-Parameter benötigt, während DateTime :: format() Mikrosekunden unterstützt, wenn DateTime mit Mikrosekunden erstellt wurde.

Wenn Sie das nicht möchten, müssen Sie das gewünschte Format manuell eingeben, z.

return $d->format('Y-m-d\Th:i:s.') . substr($micro, 0, 3) . $d->format('P'); 

Dies wird dann ausgegeben etwas wie 2016-07-15T12:29:30.546+02:00

+0

Schande über mich. Vielen Dank – sherdog