これは非常に単純な問題だと思いましたが、どこにも解決策が見つかりませんでした。
PHP と mySQL でスケジューリング プログラムを作成しています。シフトには startTime と endTime があり、それぞれが TIME として mySQL に格納されます。
従業員の週の合計時間を合計したいので、次のことを試しました。
$shifts = [...] //shifts for the week
$totalTime = 0; //I've also tried "0:0:0" and strtotime("0:00:00");
for($d = 0; $d < 7; $d++){
$start = strtotime($shift_types[$shifts[$d]]['ShiftType']['start_time']);
$end = strtotime($shift_types[$shifts[$d]]['ShiftType']['end_time']);
echo date("g:ia", $start) . ' / ' . date("g:i a", $end);
$totalTime += ($end-$start);
}
}
これに関する問題は、$totalTime が適切な数にならないことです。これは、1970 年以降、PHP が $totalTime をタイムスタンプとして扱っているためだと思います。私が本当に欲しいのは正味時間の値だけです。それに関連付けられた日付っぽい値は必要ありません。
合計時間を表示していることに言及する必要があります
echo date("g:i", $totalTime);
9:30:00 の開始と 16:15:00 の終了で実行すると、「1:45」と表示されます。合計時間に触れていない場合(シフトがないため)、「7:00」と表示されます。