私は現在strtotime()
の問題で立ち往生しています。ユーザーが作業時間を入力できるスクリプトのタイムテーブルを準備しています。スクリプトはxmlファイルからすべての変数を取得し、pdfを作成します。これまでの作業はすべてスムーズですが、夜間に入ると奇妙な問題があります。2日実行時のPHP strtotimeの問題
私はユーザが21:00(午後9時)に作業を開始し、06:00(午前6時)に終了するデバッグの例を設計しました。 正確に入力された勤務時間を取得したいので、毎回strtotime()
を入力して比較します。
開始時刻が1日目、終了時刻が2日目ですが、スクリプトが1日目にまだ考えていると思います...申し訳ありませんが、解決策は見つかりませんでした。ここに私を助けることができます。
コード例:
<?php
set_time_limit(0);
date_default_timezone_set('Europe/Berlin');
$start = '20:30';
$finish = '06:30';
$break_1_Start = '20:45';
$break_1_End = '21:00';
$break_2_Start = '00:00';
$break_2_End = '00:30';
$break_3_Start = '03:00';
$break_3_End = '03:30';
$break_4_Start = '06:00';
$break_4_End = '06:15';
/**
* Minus when + 1 day
*/
$workTime = strtotime($finish) - strtotime($start);
$break1 = strtotime($break_1_End) - strtotime($break_1_Start);
$break2 = strtotime($break_2_End) - strtotime($break_2_Start);
$break3 = strtotime($break_3_End) - strtotime($break_3_Start);
$break4 = strtotime($break_4_End) - strtotime($break_4_Start);
$workTime = $workTime - $break1 - $break2 - $break3 - $break4;
$workTime = $workTime/60;
$workTime = $workTime/60;
echo 'Work Time: '.$workTime;
?>
EDIT: 今のところ動作しますが、おそらく誰かがよりよい解決策を持っている回避策を見つけ
コード:
<?php
set_time_limit(0);
date_default_timezone_set('Europe/Berlin');
$start = strtotime('20:30');
$finish = strtotime('06:30');
$break_1_Start = strtotime('20:45');
$break_1_End = strtotime('21:00');
$break_2_Start = strtotime('00:00');
$break_2_End = strtotime('00:30');
$break_3_Start = strtotime('03:00');
$break_3_End = strtotime('03:30');
$break_4_Start = strtotime('06:00');
$break_4_End = strtotime('06:15');
if($finish > $start) {
$workTime = $finish - $start;
} else {
$end1 = strtotime('24:00');
$start1 = strtotime('00:00');
$starty = $end1 - $start;
$endy = $finish - $start1;
$workTime = $starty + $endy;
}
$break1 = $break_1_End - $break_1_Start;
$break2 = $break_2_End - $break_2_Start;
$break3 = $break_3_End - $break_3_Start;
$break4 = $break_4_End - $break_4_Start;
$workTime = $workTime - $break1 - $break2 - $break3 - $break4;
$workTime = $workTime/60;
$workTime = $workTime/60;
echo 'Work Time: '.$workTime;
?>
ので、同様の日付を考慮について、その日だけでなく、時間 – RiggsFolly
方法が含まれます。 time()関数を使って正確な情報をxmlに格納できますか? –
@ノーランドあなたがいない場合は、私の投稿を使用することができます。 –