2013-02-01 34 views
0

我正在试图找到一种方法来确定时间段是否部分或完全在另一个时间段内。例如:PHP查找一个时间段内有多少个小时在另一个时间段内

我有时间的条目:

  • 18:30:00周一至周二05:00:00,
  • 周一23:00:00星期二05:00:00,
  • 周一20:00:00星期二08:00:00,
  • 00:00:00周一至周二08:00:00,

,并需要查找,为每一个,怎么样大部分时间在22: 00:00至06:00:00。输出将需要是:

07:00:00, 06:00:00, 08:00:00, 06:00:00。

+3

有趣。你试过什么了? –

+0

你有什么使用PHP的经验? 'time()','mktime()','strtotime()' – rlatief

+2

时间条目是否可以达到多天?也就是说,星期一01:00到星期三18:00,甚至今天18:00直到2032年4月22日01:00? –

回答

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()

相关问题