История изменений
Исправление
Bizun,
(текущая версия)
:
Кажется я разобрался. Тестил минут 20, вроде все работает, какие только комбинации не перепробовал.
if ($time_start < $prev_night_end) {
$end = strtotime($prev_night_end);
$str = strtotime($time_start);
$res = (($end - $str) / 60) / 60;
$night_hours += $res;
}
if ($time_end > $night_start && $time_end < $night_end) {
$str = strtotime($night_start);
$end = strtotime($time_end);
$res = (($end - $str) / 60) / 60;
$night_hours += $res;
}
if (($time_start <= $night_start) && ($time_end >= $night_end)) {
$night_hours += 8;
}
УПД: код только для того случая, когда «рабочее время» не может длиться дольше 24 часов. Если такое может быть, то нужно делать нечто похожее на то, что предложил товарищ-анон выше.
Исправление
Bizun,
:
Кажется я разобрался. Тестил минут 20, вроде все работает, какие только комбинации не перепробовал.
if ($time_start < $prev_night_end) {
$end = strtotime($prev_night_end);
$str = strtotime($time_start);
$res = (($end - $str) / 60) / 60;
$night_hours += $res;
}
if ($time_end > $night_start && $time_end < $night_end) {
$str = strtotime($night_start);
$end = strtotime($time_end);
$res = (($end - $str) / 60) / 60;
$night_hours += $res;
}
if (($time_start <= $night_start) && ($time_end >= $night_end)) {
$night_hours += 8;
}
Исходная версия Deleted, :
Кажется я разобрался. Тестил минут 20, вроде все работает, какие только комбинации не перепробовал.
if ($time_start < $prev_night_end) {
$end = strtotime($prev_night_end);
$str = strtotime($time_start);
$res = (($end - $str) / 60) / 60;
$night_hours += $res;
}
if ($time_end > $night_start && $time_end < $night_end) {
$str = strtotime($night_start);
$end = strtotime($time_end);
$res = (($end - $str) / 60) / 60;
$night_hours += $res;
}
if (($time_start <= $night_start) && ($time_end >= $night_end)) {
$night_hours += 8;
}