Php DateTime中以毫秒为单位的3位数字

Php DateTime中以毫秒为单位的3位数字,php,datetime,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('

我创建了一个函数,它返回一个日期,如下所示: 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-d\Th:i:s.uP'); // note at point on "u"
  }

u
修饰符将始终返回六位数字:

微秒(在PHP5.2.2中添加)。请注意,date()将始终生成000000,因为它采用整数参数,而如果DateTime是以微秒创建的,则DateTime::format()不支持微秒

如果您不想这样做,您必须手动插入所需的格式,例如

return $d->format('Y-m-d\Th:i:s.') . substr($micro, 0, 3) . $d->format('P');

然后将输出类似于
2016-07-15T12:29:30.546+02:00的内容
u
修饰符将始终返回六位数字:

微秒(在PHP5.2.2中添加)。请注意,date()将始终生成000000,因为它采用整数参数,而如果DateTime是以微秒创建的,则DateTime::format()不支持微秒

如果您不想这样做,您必须手动插入所需的格式,例如

return $d->format('Y-m-d\Th:i:s.') . substr($micro, 0, 3) . $d->format('P');

这将输出类似于
2016-07-15T12:29:30.546+02:00

我真丢脸。谢谢你。谢谢