DateTime,过了几个小时

时间:2017-08-09 03:26:17

标签: php datetime

我有两个时间戳:

$date1 = new DateTime("2017-08-02T08:00:00.000Z");
$date2 = new DateTime("2017-10-02T17:00:00.000Z");

我需要知道这两者之间的时间是在08:00到17:00之间。

它应该返回24小时,3个完整的工作日。

3 个答案:

答案 0 :(得分:1)

<?php
$date1 = new DateTime("2017-08-02T10:19:55.022Z");
$date2 = new DateTime("2017-10-02T10:19:55.022Z");
$interval = $date1 ->diff($date2 );
echo $interval->format('%h')." Hours ".$interval->format('%i')." Minutes";
?>

答案 1 :(得分:0)

获取这两个日期的间隔;

$date1 = new DateTime("2017-08-02T10:19:55.022Z");
$date2 = new DateTime("2017-10-02T10:19:55.022Z");
$diff = $date1 ->diff($date2);

$diff是DateInterval的一个实例,如下所示:

DateInterval {#727
     +"y": 0,
     +"m": 2,
     +"d": 0,
     +"h": 0,
     +"i": 0,
     +"s": 0,
     +"weekday": 0,
     +"weekday_behavior": 0,
     +"first_last_day_of": 0,
     +"invert": 0,
     +"days": 61,
     +"special_type": 0,
     +"special_amount": 0,
     +"have_weekday_relative": 0,
     +"have_special_relative": 0,
   }

因此,$diff->d是日间隔的一部分$diff->h是小时间隔的一部分。您可以使用这些属性来获得所需的内容。

DateInterval类的更多细节,请查看此官方文档: http://php.net/manual/en/class.dateinterval.php

答案 2 :(得分:0)

<?php
$date1 = new DateTime("2017-08-02T10:19:55.022Z");
$date2 = new DateTime("2017-10-02T10:19:55.022Z");
$interval = $date1->getTimestamp() -$date2->getTimestamp();
echo abs($interval/(60*60));
?>
相关问题