gettimeofday

gettimeofday($as_float)

Zwraca bieżący czas z dokładnością do mikrosekundy. Bez parametru jako tablicę z wpisami sec, usec, minuteswest i dsttime, z parametrem true jako liczbę sekund typu float, to samo co microtime(true).

Parametry

  • $as_float – opcjonalny, true = zwrócić float zamiast tablicy. Domyślnie false.

Przykłady

$t = gettimeofday();
echo implode(",", array_keys($t)); // sec,usec,minuteswest,dsttime
var_dump($t["usec"] >= 0 && $t["usec"] < 1000000); // bool(true)
var_dump(abs($t["sec"] - time()) <= 1); // bool(true)
// minuteswest: przesunięcie na zachód od UTC w minutach (Warszawa latem -120)
date_default_timezone_set("UTC");
echo gettimeofday()["minuteswest"]; // 0
date_default_timezone_set("Europe/Warsaw");
// jako float
var_dump(is_float(gettimeofday(true))); // bool(true)
// jak długo działa część skryptu, w sekundach
$start = gettimeofday(true);
$duration = gettimeofday(true) - $start;

Na co uważać

  • Wpisy minuteswest i dsttime zależą od domyślnej strefy czasowej PHP (date_default_timezone_set()). Dodatnia wartość minuteswest oznacza strefę na zachód od UTC, Warszawa ma liczbę ujemną.
  • Do mierzenia czasu działania lepiej nadaje się hrtime(). Zmiana czasu systemowego na nią nie wpływa, na gettimeofday() i microtime() tak.
  • Wpisy sec i usec dają razem to samo co microtime(true), tylko jako dwie liczby całkowite.

Powiązane funkcje:
microtime()
hrtime()
time()
date_default_timezone_set()