Position actuelle: Accueil> Derniers articles> Utilisez des fonctions GetTimeOfday et Date pour implémenter

Utilisez des fonctions GetTimeOfday et Date pour implémenter

gitbox 2025-05-29

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.


1. Introduction à la fonction gettimeofday

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.

2. Combinaison de la date et de GetTimeofday pour atteindre la sortie du format en millisecondes

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.

3. Explication du code détaillé

  • 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.

4. encapsulé en fonctions

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&#39;utilisation
echo getCurrentTimeWithMilliseconds();
?>

Appelez GetCurrentTimeWithMilliseConds () pour obtenir une chaîne de temps avec des millisecondes.


Résumer

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();
?>