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
您可以使用 DateTime
和 DateInterval
:
<?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
从 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
这是我的代码:
$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
您可以使用 DateTime
和 DateInterval
:
<?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
从 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