これを正確に行う関数を次に示します (切り捨てるのではなく、丸めることによって)。
function getTimestamp()
{
$microtime = floatval(substr((string)microtime(), 1, 8));
$rounded = round($microtime, 3);
return date("Y-m-d H:i:s") . substr((string)$rounded, 1, strlen($rounded));
}
説明:
microtime() は、スペースで区切られた 1 つの文字列として 2 つの数値を返します。2 番目の数値は UNIX エポックからの秒数で、1 番目の数値は 2 番目の数値からのマイクロ秒数です。基本的に、最初の数値は 8 精度形式 (0.00000000) で表されるマイクロ秒の量であり、末尾の 0 は決して切り捨てられません。
これを 3 (0.00) の精度に丸め、先頭の 0 を切り捨て、それを実際のタイムスタンプに追加します。
何らかの理由で、u、マイクロ秒の php ドキュメントは実際にはサポートされていないようです。その方法を使用すると、毎回 0.000 になります。そこで、バックアップ ソリューションとして microtime() に頼りました。