加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在两个dateTime obj之间获得毫秒?

发布时间:2020-12-13 22:36:18 所属栏目:PHP教程 来源:网络整理
导读:如何在两个DateTime对象之间获得毫秒? $date = new DateTime();$date2 = new DateTime("1990-08-07 08:44"); 我试着按照下面的评论,但我收到了一个错误. $stime = new DateTime($startTime-format("d-m-Y H:i:s"));$etime = new DateTime($endTime-format("
如何在两个DateTime对象之间获得毫秒?
$date = new DateTime();
$date2 = new DateTime("1990-08-07 08:44");

我试着按照下面的评论,但我收到了一个错误.

$stime = new DateTime($startTime->format("d-m-Y H:i:s"));
$etime = new DateTime($endTime->format("d-m-Y H:i:s")); 
$millisec = $etime->getTimestamp() - $stime->getTimestamp();`

我收到了错误

Call to undefined method DateTime::getTimestamp()

严格来说,你不能.

这是因为DateTime类的最小时间单位是秒.

如果您需要包含毫秒的测量值,请使用microtime()

编辑:

另一方面,如果你只想获得两个ISO-8601 datetimes之间的间隔(毫秒),那么一个可能的解决方案就是

function millisecsBetween($dateOne,$dateTwo,$abs = true) {
    $func = $abs ? 'abs' : 'intval';
    return $func(strtotime($dateOne) - strtotime($dateTwo)) * 1000;
}

请注意,默认情况下,上述函数返回绝对差值.如果您想知道第一个日期是否更早,则将第三个参数设置为false.

// Outputs 60000
echo millisecsBetween("2010-10-26 20:30","2010-10-26 20:31");

// Outputs -60000 indicating that the first argument is an earlier date
echo millisecsBetween("2010-10-26 20:30","2010-10-26 20:31",false);

在时间数据类型的大小为32位的系统上,例如Windows7或更早版本,millisecsBetween仅适用于1970-01-01 00:00:00和2038-01-19 03:14:07之间的日期(参见Year 2038 problem) .

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读