总有人间一两风,填我十万八千梦

PHP date日期格式化精确到毫秒ms/微秒µs (000000问题)

PHP Zero、J 2747℃ 0评论

通常使用date(‘mdYHis’) 来格式化一个日期字串,例如20190101154802,但是有的时候我们可能需要更为准确的时间,比如带上毫秒(年份用Y标记,毫秒使用v标记,微秒用u标记)。但是,遗憾的是date函数只接受integer 参数,因此date函数中使用u格式化微秒的时候总是返回000000 。

解决方案 一

使用DateTime类进行格式化,u表示微秒,1毫秒=1000微秒,使用u格式化的时候返回6位微秒数值,如果只需要毫秒,除以1000即可得到毫秒。

$d = new \DateTime();
//1毫秒=1000微秒,u表示的是微秒(格式化结果是6位),除以1000即可得到毫秒
echo '当前时间:'.$d->format( 'Y-m-d H:i:s.u' );
echo '<br/>';
echo '当前毫秒数: '.floor($d->format('u')/1000);

解决方案二

使用microtime ,microtime() 可以获取到当前 Unix 时间戳以及微秒数,如果调用指定参数true,则返回一个浮点数,微秒是小数部分。


$t = microtime(true);
echo '当前微秒数: '.sprintf('%06d',($t-floor($t))*pow(10,6) );

其中$t-floor($t)是获取到小数部分,乘以10的6次方是转换为6位整数部分 ,以便用%06d进行格式化,获取到微秒数值。

当然,你也可以使用microtime不带参数的形式,此时将会返回一个空格分割的字串,微秒在前,秒在后。

转载请注明:悠然品鉴 » PHP date日期格式化精确到毫秒ms/微秒µs (000000问题)

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址