我正试图找到一种方法来确定时间跨度是否在另一个时间跨度内部分或完全。例如:
我有时间条目:
并且需要找到每个人在22:00:00到06:00:00的时间段内有多少时间。输出必须是:
7时零零分00秒, 06:00:00, 08:00:00, 6时00分00秒。
答案 0 :(得分:1)
您要找的是DateTime::diff
,它会返回DateInterval
的实例
这里有一个小例子:
$d1 = new DateTime("Monday 18:30:00");
$d2 = new DateTime("Tuesday 05:00:00");
$limit1 = new DateTime("Monday 22:00:00");
$limit2 = new DateTime("Tuesday 06:00:00");
$within1 = $d1->getTimestamp() < $limit1->getTimestamp() ? $limit1 : $d1;
$within2 = $d2->getTimestamp() < $limit2->getTimestamp() ? $d2 : $limit2;
$interval = $within1->diff($within2);
print_r($interval);
print_r($interval);
输出:
DateInterval Object
(
[y] => 0
[m] => 0
[d] => 0
[h] => 7
[i] => 0
[s] => 0
[invert] => 0
[days] => 0
)
您可以直接读取此属性,也可以使用DateInterval :: format()