En PHP, nous devons souvent obtenir l'heure actuelle et formater la sortie. La fonction de date par défaut prend uniquement une prise en charge précise en secondes. Cependant, dans certains scénarios, tels que la journalisation, la surveillance des performances, etc., nous avons besoin de temps précis pour produire du temps en millisecondes. Cet article présentera comment combiner les fonctions GetTimeofday et Date pour atteindre la sortie du format de temps avec des millisecondes.
GetTimeOfday est une fonction qui obtient l'heure actuelle, renvoyant les informations actuelles UNIX et les informations microsecondes. Sa valeur de retour peut être un tableau ou un numéro de point flottant, qui contient des secondes et des microsecondes.
print_r(gettimeofday());
Exemple de sortie:
Array
(
[sec] => 1617181723
[usec] => 123456
[minuteswest] => 0
[dsttime] => 0
)
Ici, SEC est le nombre actuel de secondes, et USEC est les microsecondes dans le nombre actuel de secondes.
La fonction de date de PHP peut formater les horodatages de secondes, tandis que la partie milliseconde peut être obtenue via la fonction GetTimeOfday . Voici un exemple simple de code:
<?php
$time = gettimeofday();
$sec = $time['sec']; // Nombre de secondes
$usec = $time['usec']; // 微Nombre de secondes
$milliseconds = floor($usec / 1000); // Convertir les microsecondes en millisecondes
// Formater la chaîne de temps
$formattedTime = date('Y-m-d H:i:s', $sec) . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT);
echo $formattedTime;
?>
Exemple de résultats de sortie:
2025-05-24 15:43:12.123
Ici, STR_PAD est utilisé pour s'assurer que les millisecondes sont toujours à 3 chiffres, comme l'ajout de zéros avant moins de 3 chiffres.
getTimeOfday () renvoie les secondes et les microsecondes de l'heure actuelle.
Formatez le nombre de secondes en utilisant la date ('ymd h: i: s', $ sec) .
Convertissez les microsecondes en millisecondes en divisant par 1000.
Utilisez STR_PAD pour vous assurer que la partie milliseconde est à trois chiffres.
Pour la commodité du multiplexage, nous pouvons le résumer en une fonction:
<?php
function getCurrentTimeWithMilliseconds() {
$time = gettimeofday();
$sec = $time['sec'];
$usec = $time['usec'];
$milliseconds = floor($usec / 1000);
return date('Y-m-d H:i:s', $sec) . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT);
}
// Exemple d'utilisation
echo getCurrentTimeWithMilliseconds();
?>
Appelez GetCurrentTimeWithMilliseConds () pour obtenir une chaîne de temps avec des millisecondes.
En combinant les fonctions GetTimeofday et Date , la sortie du format de temps en PHP avec des millisecondes peut être facilement implémentée. Cette méthode ne s'appuie pas sur des extensions supplémentaires et est compatible et convient aux scénarios où des horodatages précis sont nécessaires.
<?php
function getCurrentTimeWithMilliseconds() {
$time = gettimeofday();
$sec = $time['sec'];
$usec = $time['usec'];
$milliseconds = floor($usec / 1000);
return date('Y-m-d H:i:s', $sec) . '.' . str_pad($milliseconds, 3, '0', STR_PAD_LEFT);
}
echo getCurrentTimeWithMilliseconds();
?>