PHP 添加毫秒作为微时间

PHP add miliseconds as microtime to date

这是我的代码:

$d2 = new DateTime("2019-01-01 02:24:19.769002");
echo $d2->format("Y-m-d H:i:s.u");

$tBefore = microtime(true);

// GET ANOTHER DATA

$tAfter = microtime(true);

$d2->modify('+'.($tAfter-$tBefore).' microsecond');
echo $d2->format("Y-m-d H:i:s.u");

但是我的代码 return 错误的毫秒日期。

我想在第一个日期上加上毫秒数,得到 ANOTHER DATA 的时间。

实际上如果 ANOTHER DATA 需要 0.100 毫秒,我的结果应该是 2019-01-01 02:24:19.869002

您可以使用 DateTimeDateInterval:

<?php

$d2 = new DateTime('2019-01-01 02:24:19.769002');

$tBefore = new DateTime();
// `sleep` to simulate work done between `$tBefore` and `$tAfter`
sleep(1);
$tAfter = new DateTime();

$d2->add($tBefore->diff($tAfter));

print_r($d2);

https://www.php.net/manual/en/class.dateinterval.php

https://www.php.net/manual/en/datetime.add

https://www.php.net/manual/en/datetime.diff

从 PHP 7.1 开始,微秒也可以使用 modify 方法轻松添加到 DateTime。微秒值必须是整数,不能是浮点数。 microtime (true) 也将秒数作为浮点数而不是微秒数。

$date = new DateTime("2019-01-01 02:24:19.769002");
$seconds = 0.100;

$intMicroseconds = intval($seconds * 1000000);
$date->modify($intMicroseconds.' microseconds');

echo $date->format("Y-m-d H:i:s.u");
//2019-01-01 02:24:19.869002