【发布时间】:2013-08-15 15:43:06
【问题描述】:
我可以在 PHP 中获得一个微秒的日期时间,解决方法如下:
list($usec, $sec) = explode(" ", microtime());
echo date("Y-m-d\TH:i:s", $sec) . "." . floatval($usec)*pow(10,6);
我需要两个日期时间之间的微秒差异,无法解决:
$datetime1 = new DateTime('2013-08-14 18:49:58.606');
$datetime2 = new DateTime('2013-08-14 22:27:19.272');
$interval = $datetime1->diff($datetime2);
echo $interval->format('%h hours %i minutes %s seconds %u microseconds');
DateInterval::format 没有格式字符 %u 或微秒的等效字符。
有人知道解决方法吗?
【问题讨论】:
-
DateInterval不支持微秒。而且DateTime也不支持它们。您必须手动进行所有相关计算才能达到这样的精度。 -
DateTime::createFromFormat() 最近添加了
u格式(PHP 5.5?),但我找不到任何证据表明它受 DAteInterval 支持 -
@Baldrs 我知道,但是使用时间函数很容易出错,我要求一种解决方法,一种非标准解决方案。
-
@MarkBaker 我正在使用 PHP 5.5.1 %u 是这样打印的
-
作为参考,PHP 7.1 已将
F和f添加到DateInterval::format微秒(分别带有和不带前导零)。