2016-08-16 9 views
0

データベースの開始時刻と終了時刻を比較していました。私はついにそれを理解することができましたが、今はすべての時間差を合計するために時間を一緒に追加する必要があります。それを行う最善の方法と最速の方法は何ですか?私は以前にDateTimeを使ったことがありません。 私はwhileループに$date->add($interval)のようなものを追加できますか?私はそれを実装する適切な方法を理解できません。 $starttimeのvar例:11時〇三分52秒AM $startdateするvar例:2016年8月16日 $endtimeのvar例:午前8時04分53秒AM $enddateのvar例:2016年8月17日DateTimeを使用して複数の日付と時刻を追加する

$start = $startdate." ".$starttime; 
$end = $enddate." ".$endtime; 

$start_formatted = DateTime::createFromFormat('m-d-Y g:i:s A', $start); 
$started_on = $start_formatted->format("m-d-Y g:i:s A"); 

$end_formatted = DateTime::createFromFormat('m-d-Y g:i:s A', $end); 
$ended_on = $end_formatted->format("m-d-Y g:i:s A"); 

$interval=$start_formatted->diff($end_formatted); 

$intervalTypes = array("y", "m", "d", "h", "i", "s"); 
$intervalDescription = array("years", "months", "days", "hours", "minutes", "seconds"); 
$intervalLength = count($intervalTypes); 
$intervalCounter = 0; 



while ($intervalCounter < $intervalLength) { 

$currentInterval = $intervalTypes[$intervalCounter]; 

if ($interval->$currentInterval != 0) { 
    if ($interval->$currentInterval > 1) { 
      echo $interval->$currentInterval." ".$intervalDescription[$intervalCounter]." "; 
     } else { 
      echo $interval->$currentInterval." ".substr($intervalDescription[$intervalCounter], 0, -1)." "; 
      } 
} 

$intervalCounter++; 
} 

答えて

0

あなたは一度にデフォルトのdateTimeを設定する必要があります。もう1つは正確に同じ時刻に設定されています。次に、2つのdateTimeのいずれかに見つかった間隔を追加するだけです。最後にdiffメソッドをもう一度呼び出して、2つの時間の合計時間差にする必要があります。

例:

$default = new DateTime("2000-01-01"); 
$total = new DateTime("2000-01-01"); 

あなたが最後ここ

$totalInterval = $default->diff($total); 

で、すべてのあなたの間隔

$total->add($interval); 

を計算し、ここであなたのコードを、あなたはDateIntervalは、すべてのcumulを含む取得間隔は

関連する問題