¿Cómo obtener la hora actual en milisegundos en PHP?
time()
está en segundos, ¿hay uno en milisegundos?
La respuesta corta es:
$milliseconds = floor(microtime(true) * 1000);
Usar microtime
. Esta función devuelve una cadena separada por un espacio. La primera parte es la parte fraccionaria de segundos, la segunda parte es la parte integral. Pase true
para obtener como un número:
var_dump(microtime()); // string(21) "0.89115400 1283846202"
var_dump(microtime(true)); // float(1283846202.89)
Tenga cuidado con la pérdida de precisión si usa microtime(true)
.
También existe gettimeofday
la posibilidad de que devuelva la parte de microsegundos como un número entero.
var_dump(gettimeofday());
/*
array(4) {
["sec"]=>
int(1283846202)
["usec"]=>
int(891199)
["minuteswest"]=>
int(-60)
["dsttime"]=>
int(1)
}
*/
Como han dicho otros, puede utilizarlo microtime()
para obtener una precisión de milisegundos en las marcas de tiempo.
Según sus comentarios, parece que lo desea como una marca de tiempo UNIX de alta precisión. Algo así como DateTime.Now.Ticks
en el mundo .NET.
Puede utilizar la siguiente función para hacerlo:
function millitime() {
$microtime = microtime();
$comps = explode(' ', $microtime);
// Note: Using a string here to prevent loss of precision
// in case of "overflow" (PHP converts it to a double)
return sprintf('%d%03d', $comps[1], $comps[0] * 1000);
}
Versión más corta de la variante de cadena (compatible con 32 bits):
$milliseconds = date_create()->format('Uv');