2016-11-08 2 views
0

Je le tableau suivant:COUNT minutes entre deux dates de regroupement par jour/heure

$periods = array(
    ['begin' => '2013-08-14 10:00:00', 'end' => '2013-08-14 11:30:00'], 
    ['begin' => '2013-08-14 11:40:00', 'end' => '2013-08-14 11:45:00'], 
    ['begin' => '2013-08-14 11:45:00', 'end' => '2013-08-14 11:52:00'], 
    ['begin' => '2013-08-08 07:00:00', 'end' => '2013-08-08 09:25:00'], 
    ['begin' => '2013-08-09 23:50:00', 'end' => '2013-08-10 00:25:00'] 
); 

Ce que je veux est de compter les minutes entre chaque groupe de période par jour/heure pour avoir quelque chose comme ceci:

date     minutes 
2013-08-14 10:00:00 : 60 
2013-08-14 11:00:00 : 42 
2013-08-08 07:00:00 : 60 
2013-08-08 08:00:00 : 60 
2013-08-08 09:00:00 : 25 
2013-08-09 23:00:00 : 10 
2013-08-10 00:00:00 : 25 

Répondre

0

Ok, je l'ai compris.

Le tableau:

$periods = array(
    ['begin' => '2013-08-14 10:00:00', 'end' => '2013-08-14 11:30:00'], 
    ['begin' => '2013-08-14 11:40:00', 'end' => '2013-08-14 11:45:00'], 
    ['begin' => '2013-08-14 11:45:00', 'end' => '2013-08-14 11:52:00'], 
    ['begin' => '2013-08-08 07:00:00', 'end' => '2013-08-08 09:25:00'], 
    ['begin' => '2013-08-09 23:50:00', 'end' => '2013-08-10 00:25:00'] 
); 

Le code:

$period_difference = array(); 
foreach ($intervals as $interval) { 
    $dateTimes = new DatePeriod(
     new DateTime($interval['begin']), 
     new DateInterval('PT1M'), 
     new DateTime($interval['end']) 
    ); 

    foreach ($dateTimes as $dt) { 
     $period_difference[$dt->format('Y-m-d H:00:00')] = isset($period_difference[$dt->format('Y-m-d H:00:00')]) ? $period_difference[$dt->format('Y-m-d H:00:00')]+1 : 1; 
    } 
} 

Pour tester sur phpio.net: http://phpio.net/s/idl