#php
Вопрос:
я хочу подсчитать, сколько времени прошло в работе с пропущенным временем перерыва(не засчитывается) Есть 3 смены :
- Утренняя смена: с 08 утра до 04 вечера (Время перерыва : с 00 вечера до 01 вечера) (время первого перерыва : с 11.30 утра до 01.30 вечера)
- Дневная смена: с 05 вечера до 10 вечера (Время перерыва : с 07 вечера до 08 вечера)
- Ночная смена: с 11 вечера до 07 утра (Время перерыва : с 02 утра до 03 утра)
Я пытаюсь сделать это с помощью этого кода : ( Примечание : Но он отлично работает только в ночную смену, в утреннюю и дневную смену это беспорядок)
<?php
function hitung()
{
global $waktu_awal;
global $waktu_akhir;
global $query;
global $break;
$minute = 0;
$hajam = 0;
$hmnt = 0;
$j = 0;
while ($rs = mysqli_fetch_array($query)) {
$break = 0;
$start = ($rs['waktu_mulai'] == NULL) ? "" : strtotime($rs['waktu_mulai']);
$end = ($rs['waktu_selesai'] == NULL) ? "" : strtotime($rs['waktu_selesai']);
$tgl1 = new DateTime($rs['waktu_mulai']);
$tgl2 = new DateTime($rs['waktu_selesai']);
$d = $tgl2->diff($tgl1)->days;
if ($d == 0) {
$d = 1;
}
//$t1 = date_create($rs['waktu_mulai']);
$t2 = date_create($rs['waktu_selesai']);
$hamnt = 0;
for ($i = 1; $i <= $d; $i ) {
$diff = $end - $start;
$hours = floor($diff / (3600));
$minute = $diff - $hours * (3600);
$break_time = array(300, 359, 1199, 1299, 1899, 1999);
if (
(int)date_format($t2, "Hi") > (int)$break_time[0] and (int)date_format($t2, "Hi") <= (int)$break_time[1] ||
(int)date_format($t2, "Hi") > (int)$break_time[2] and (int)date_format($t2, "Hi") <= (int)$break_time[3] ||
(int)date_format($t2, "Hi") > (int)$break_time[4] and (int)date_format($t2, "Hi") <= (int)$break_time[5]
) {
$minute = 0;
}
if ((int)date_format($t2, "Hi") > (int)$break_time[1]) $break ;
if ((int)date_format($t2, "Hi") > (int)$break_time[3]) $break ;
if ((int)date_format($t2, "Hi") > (int)$break_time[5]) $break ;
echo $hours . ":" . floor($minute / 60) . "</br>";
$hjam = 0;
if (is_null($hjam)) {
$hjam = $hours - $break;
$hmnt = $minute;
} else {
$hjam = $hjam $hours - $break;
$hmnt = $hmnt $minute;
}
if (is_null($hjam)) {
$hajam = (int)$hjam;
$hamnt = (int)$hmnt;
} else {
$hajam = (int)$hajam (int)$hjam;
$hamnt = (int)$hamnt (int)$hmnt;
}
echo "Total : ". $break ;
echo (int)$hours - $break . ':' . floor($minute / 60) . "</br>";
$break = 0;
}
if (floor($hamnt / 60) < 60) {
$j = 0;
}
}
}
?>