Il existe des informations montrant que dans la version 7.1, DateTime::__construct() peut déjà prendre en charge les millisecondes. Et soulignez spécifiquement :
Cela signifie que les comparaisons naïves de deux instances nouvellement créées renverront désormais plus probablement FAUX au lieu de VRAI : new DateTime() == new DateTime()
Cependant, dans mon code, la partie milliseconde est toujours "000000", quel est le problème :
<?php
for ($i = 0; $i < 10000; ++$i) {
$date = new DateTime();
// if ($date->format('u') != '000000') {
file_put_contents('./msec.log', "$i:\t" . $date->format('s.u') . PHP_EOL, FILE_APPEND);
// }
}
Sortie :
0: 51.000000
1: 51.000000
2: 51.000000
……
4999: 51.000000
5000: 51.000000
5001: 51.000000
……
9997: 51.000000
9998: 51.000000
9999: 51.000000
Oui, le document dit qu'il a été ajouté dans php5.2.2, mais j'ai trouvé le même problème après le test et je n'ai pu renvoyer que 000000
Mais vous pouvez utiliser cette fonction : microtime()
Je l'ai testé localement.
7.0, affichant « 000000 »
7.1, affichant des données réelles.
Alors, êtes-vous sûr que l'environnement dans lequel vous exécutez le code est 7.1 ?