web-dev-qa-db-fra.com

Obtenez l'horodatage actuel en millisecondes

Je veux obtenir l'horodatage actuel en millisecondes en PHP quelque chose comme ci-dessous, en JavaScript j'utilise Date.now()

1436030635348

J'ai essayé quelque chose comme ci-dessous:

$time = str_replace(".","",microtime(true)); 

Mais parfois, cela ne fonctionne pas correctement. Comme il imprime un ou deux chiffres de moins.

9
Vishnu

Il peut imprimer moins de chiffres, car il s'agit d'une valeur flottante. Donc, si vous obtenez 1234.0005, Ce `.0005 signifie en fait 500 microsecondes. Les zéros après le 5 sont perdus car il s'agit toujours d'une valeur flottante non formatée.

La fonction microtime est basée sur l'appel système gettimeofday(), qui n'est pas non plus précis à la microseconde près. Généralement, il est précis à 10 microsecondes. Voir aussi Linux - La résolution de gettimeofday () est-elle garantie à la microseconde .

-edit- Je vois que les spécifications sont passées de microsecondes à millisecondes.

Pour obtenir la valeur flottante que vous avez sous forme d'entier, vous pouvez multiplier par une valeur. La valeur flottante représente les secondes. Multipliez par 1 000 pour obtenir des millisecondes ou 1 000 000 pour obtenir des microsecondes. Étant donné que les spécifications (maintenant) indiquent les millisecondes, vous devez multiplier par 1000. 10k vous donnera une précision de 1/10ms = 100μs. Une milliseconde est un millième de seconde. Une microseconde est un millionième de seconde.

Pour faire court, pour obtenir l'heure en millisecondes entières, utilisez ceci:

$milliseconds = round(microtime(true) * 1000);

Remarque: il y a une raison pour laquelle vous obtenez l'heure sous forme de chaîne ou de flottant par défaut. La raison en est que sur les systèmes 32 bits, l'entier de PHP est également 32 bits et n'est pas assez grand pour contenir l'horodatage, y compris les millisecondes et les microsecondes. Cette solution ne fonctionnera donc bien que sur un système 64 bits.

11
GolezTrol
$timeStampData = microtime();
list($msec, $sec) = explode(' ', $timeStampData);
$msec = round($msec * 1000);

$result = $sec . $msec;

Quelque chose comme ça

Mais notez que js date.now () renvoie l'heure en MILLIsecondes, pas MICROsecondes

1

Je pense que vous avez juste besoin d'utiliser cette fonction pour obtenir un horodatage avec des micro secondes en PHP:

int microtime ( void )

Utilisez-le comme indiqué dans ce qui suit link , l'extrait de code suivant vous montre comment je l'ai modifié en fonction de votre question:

<?php

function microtime_microseconds()
{
     list($usec, $sec) = explode(" ", microtime());
     return round(($usec * 1000) + $sec);
}

$micro_time = microtime_microseconds();

echo $micro_time;

?>

Et aussi pour référence concernant cette microtime() PHP, veuillez visiter et lire ceci page de manuel PHP .

0
Randika Vishman