time()
est en secondes - y en a-t-il une en millisecondes?
Réponses
Trop de publicités?Utiliser microtime()
. Cette fonction retourne une chaîne de caractères séparés par un espace. La première partie est la partie fractionnaire de secondes, la deuxième partie est la partie intégrante. Pass en true
pour obtenir un numéro:
var_dump(microtime()); // string(21) "0.89115400 1283846202"
var_dump(microtime(true)); // float(1283846202.89)
Méfiez-vous de la perte de précision due si vous utilisez microtime(true)
.
Il est également gettimeofday()
qui retourne le nombre de microsecondes partie comme un entier.
var_dump(gettimeofday());
/*
array(4) {
["sec"]=>
int(1283846202)
["usec"]=>
int(891199)
["minuteswest"]=>
int(-60)
["dsttime"]=>
int(1)
}
*/
Comme d'autres l'ont déjà indiqué, vous pouvez utiliser microtime()
pour obtenir une précision en millisecondes sur les horodatages.
D'après vos commentaires, vous semblez vouloir l'utiliser comme horodatage UNIX de haute précision. Quelque chose comme DateTime.Now.Ticks
dans le monde .NET.
Vous pouvez utiliser la fonction suivante pour le faire:
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);
}
Utilisez microtime(true)
en PHP 5, ou la modification suivante en PHP 4:
array_sum(explode(' ', microtime()));
Un moyen portable d'écrire ce code serait:
function getMicrotime()
{
if (version_compare(PHP_VERSION, '5.0.0', '<'))
{
return array_sum(explode(' ', microtime()));
}
return microtime(true);
}
Essayez le microtime .