2016-08-12 8 views
-2

2つの日付の間のセッション数(12 AM-12AM)を計算する必要があります。私はそれの正しい論理を見つけることができカント62つの日付の間にセッション数(12 AM-12AM)を計算する方法

12th 11:30AM-11:59AM -->1 
12TH 12:00PM-11:59PM -->2 
13TH 12:00AM-11:59AM -->3 
13TH 12:00PM-11:59PM -->4 
14TH 12:00AM-11:59AM -->5 
14TH 12:00PM-9:30PM --->6 

$a='12-05-2016 11:30AM' 
$b='14-05-2016 9:30PM' 

について

出力があるべきです。必要な解決策を見つけるのを助けてください

+4

*見つけることはできませんか?いいえ、***あなた***はそれを書く必要があります。私たちにあなたの試行を見せたら、そこから修正しようとします。そうでなければ、実際にあなたがコピーして貼り付けているときに、プログラミングを学んでいると思うことにあなた自身をだますでしょう。 – Script47

+0

あなたは本当に私には不明な点がありますが、正確に何をしようとしていますか? –

+0

@ Script47コードを書く必要はありません。 –

答えて

0

以下の機能を試してみてください。hereを試してみてください。

<?php 

    $a   = '12-05-2016 11:30AM'; 
    $b   = '14-05-2016 9:30PM'; 

    function getDatesDiffInSteps($date1, $date2){ 
     $dateSplit1 = explode(" ", $date1); list($dA, $tA) = $dateSplit1; 
     $dt1  = new DateTime($date1); 
     $dt2  = new DateTime($date2); 
     $baseDateA = new DateTime($dA); 
     $prDate  = new DateTime($date1); 
     $i   = 1; 
     $iDiff  = ($dt2->getTimestamp() - $dt1->getTimestamp()); 
     $diff  = $dt2->diff($dt1); 
     $d   = $diff->d; 
     $h   = $diff->h; 
     $arr  = []; 
     $prDate->setTime(0, 0, 0); 

     if($iDiff > 0){ 
      // GET THE NEAREST 12 O'CLOCK TO THE START TIME: 
      $noon  = date_create_from_format("d-m-Y H:i", "{$dA} 11:59"); 
      $night  = date_create_from_format("d-m-Y H:i", "{$dA} 23:59"); 
      if($noon>$dt1){ 
       $arr[]  = $dt1->format("jS h:iA") . " - " . $noon->format("H:iA") . " -->{$i}"; 
       $prDate->setTime(12, 0, 0); 
      }else if($night>$dt1){ 
       $arr[]  = $dt1->format("jS h:iA") . " - " . $night->format("H:iA") . " -->{$i}"; 
       $prDate->setTime(24, 0, 0); 
      } 

      if($d){ 
       $h += ($d*24); 
      } 
      for($hr=0; $hr<=($h); $hr+=12){ 
       $i++; 
       $lDate = $baseDateA->add(new DateInterval("PT12H")); 
       $sDate = $prDate->add(new DateInterval("PT11H59M59S")); 
       if($i < intval($h/12)+2){ 
        $arr[] = $lDate->format("jS h:iA") . " - " . $sDate->format("h:iA") . " -->{$i}"; 
       }else{ 
        $arr[] = $lDate->format("jS h:iA") . " - " . $dt2->format("h:iA") . " -->{$i}"; 
       } 
      } 

     } 
     return $arr; 
    } 
    var_dump(getDatesDiffInSteps($a, $b)); 

    // PRODUCES: 
    array (size=6) 
     0 => string '12th 11:30AM - 11:59AM -->1' (length=27) 
     1 => string '12th 12:00PM - 11:59PM -->2' (length=27) 
     2 => string '13th 12:00AM - 11:59AM -->3' (length=27) 
     3 => string '13th 12:00PM - 11:59PM -->4' (length=27) 
     4 => string '14th 12:00AM - 11:59AM -->5' (length=27) 
     5 => string '14th 12:00PM - 09:30PM -->6' (length=27) 
関連する問題