2013-02-01 35 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()

相關問題