Вот функция, которая сделает это для вас точно (округляя, а не обрезая):
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 () возвращает 2 числа в виде 1 строки, разделенной пробелом. 2-е число - это количество секунд с начала эпохи Unix, а 1-е число - это количество микросекунд с 2-го числа. По сути, первое число - это количество микросекунд, выраженное в формате с точностью 8 (0,00000000), а конечные 0 никогда не обрезаются.
Мы округляем это значение с точностью до 3 (0,00), обрезаем начальный 0 и добавляем его к фактической отметке времени.
По какой-то причине php doc для вас, микросекунды, похоже, на самом деле не поддерживается. Я получаю 0,000 каждый раз при использовании этого метода. Поэтому я прибегнул к microtime () в качестве решения для резервного копирования.