在以下代码中
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', $t);
$now = $now->format("H:i:s.v");
如果 microtime(true) 恰好返回一个所有小数位都为零的浮点数,则尝试 format() 会返回致命错误。这是因为 DateTime::createFromFormat('U.u', $aFloatWithAllZeros) 返回 false。
解决方法(while 循环用于测试解决方案是否有效)
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', $t);
while (!is_bool($now)) {// 用于测试解决方案
$t = microtime(true);
$now = DateTime::createFromFormat('U.u', $t);
}
if (is_bool($now)) {// 问题
$now = DateTime::createFromFormat('U', $t);// 解决方案
}
$now = $now->format("H:i:s.v");