424 Stimmen

Wie erhält man die aktuelle Zeit in Millisekunden in PHP?

time() ist in Sekunden - gibt es auch eine in Millisekunden?

17voto

mojmir.novak Punkte 2044

echo date('Y-m-d H:i:s.') . gettimeofday()['usec'];

Ausgabe:

2016-11-19 15:12:34.346351

14voto

Alix Axel Punkte 146320

Utilice microtime(true) in PHP 5, oder die folgende Änderung in PHP 4:

array_sum(explode(' ', microtime()));

Ein portabler Weg, diesen Code zu schreiben, wäre:

function getMicrotime()
{
    if (version_compare(PHP_VERSION, '5.0.0', '<'))
    {
        return array_sum(explode(' ', microtime()));
    }

    return microtime(true);
}

10voto

Gras Double Punkte 14944

Dies funktioniert auch, wenn Sie 32-Bit-PHP verwenden:

list($msec, $sec) = explode(' ', microtime());

$time_milli = $sec.substr($msec, 2, 3); // '1491536422147'
$time_micro = $sec.substr($msec, 2, 6); // '1491536422147300'

Beachten Sie, dass Sie damit keine Ganzzahlen, sondern Zeichenketten erhalten. Dies funktioniert jedoch in vielen Fällen gut, zum Beispiel bei der Erstellung von URLs für REST-Anfragen.

Wenn Sie Ganzzahlen benötigen, ist 64-Bit-PHP zwingend erforderlich.

Dann können Sie den obigen Code wiederverwenden und in (int) umwandeln:

list($msec, $sec) = explode(' ', microtime());

// these parentheses are mandatory otherwise the precedence is wrong!
//                                          
$time_milli = (int) ($sec.substr($msec, 2, 3)); // 1491536422147
$time_micro = (int) ($sec.substr($msec, 2, 6)); // 1491536422147300

Oder Sie können die guten alten Einzeiler verwenden:

$time_milli = (int) round(microtime(true) * 1000);    // 1491536422147
$time_micro = (int) round(microtime(true) * 1000000); // 1491536422147300

9voto

Sadee Punkte 2524

PHP 5.2.2 <

$d = new DateTime();
echo $d->format("Y-m-d H:i:s.u"); // u : Microseconds

PHP 7.0.0 < 7.1

$d = new DateTime();
echo $d->format("Y-m-d H:i:s.v"); // v : Milliseconds

8voto

Versuchen Sie dies:

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

    return $d->format("Y-m-d H:i:s.u"); 
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X