日期时间中的毫秒数为 3 位

  • 本文关键字:时间 日期 php datetime
  • 更新时间 :
  • 英文 :


我创建了一个函数,它返回的日期如下所示: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

相关内容

  • 没有找到相关文章

最新更新