Terdapat maklumat yang menunjukkan bahawa dalam versi 7.1, DateTime::__construct() sudah boleh menyokong milisaat. Dan secara khusus menekankan:
Ini bermakna bahawa perbandingan naif dua kejadian yang baru dibuat kini lebih berkemungkinan akan mengembalikan FALSE dan bukannya TRUE: new DateTime() == new DateTime()
Walau bagaimanapun, dalam kod saya, bahagian milisaat sentiasa "000000", apakah masalahnya:
<?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);
// }
}
Keluaran:
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
Ya, dokumen itu mengatakan ia telah ditambahkan dalam php5.2.2, tetapi saya menemui masalah yang sama selepas ujian dan hanya boleh mengembalikan 000000
Tetapi anda boleh menggunakan fungsi ini: microtime()
Saya mengujinya secara tempatan.
7.0, menunjukkan '000000'
7.1, menunjukkan data sebenar.
Jadi, adakah anda pasti persekitaran tempat anda menjalankan kod tersebut ialah 7.1?