我创建了一个函数,它返回的日期如下所示:2016-07-15T10:10:52。031563+00:00
这很好,但问题是毫秒的数字。如何删除最后 3 位数字?我只需要 3 个。
private function getFormattedDate($time = 'now'){
$t = microtime(true);
$micro = sprintf("%06d",($t - floor($t)) * 1000000);
$d = new DateTime( date('Y-m-d H:i:s.'.$micro, $t) );
$d->modify($time);
return $d->format('Y-m-dTh:i:s.uP'); // note at point on "u"
}
u
修饰符将始终返回六位数字。引用手册:
微秒(在 PHP 5.2.2 中新增)。请注意,date() 将始终生成 000000,因为它需要一个整数参数,而 DateTime::format() 确实支持微秒,如果 DateTime 是用微秒创建的。
如果您不想这样做,则必须手动插入所需的格式,例如
return $d->format('Y-m-dTh:i:s.') . substr($micro, 0, 3) . $d->format('P');
这将输出类似2016-07-15T12:29:30.546+02:00
要获得 3 位毫秒值,我们现在可以使用"v"格式:
echo (new datetime())->format('Y-m-d H:i:s.v');
这将输出 3 位毫秒,无需使用 substr。
2023-06-04 21:13:50.544
参考:https://www.php.net/manual/en/datetime.format.php