2016-08-12 12 views
-2

我需要計算兩個日期之間的會話數(12 AM-12AM)。如何計算兩個日期之間的會話數(12 AM-12AM)

對於防爆

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

輸出應該是6

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 

我不能能夠找到正確的邏輯了點。請幫忙找到所需的解決方案

+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) 
相關問題