Извините, я что-то не то написал??
Если вам действительно будет нужно, могу написать сюда коды на PHP и SQL, которые будут выполнять работу поля "Разница в днях".
Все просто до того момента, когда нужно исключить конкретные дни:)
Запроса на код не было, и я не понимаю, нужно или нет.
Мы с вами не знакомы, откуда это необоснованное обобщение "у вас так всё устроено"?
Ну а это написал какой-то ребёнок...
Код: Выделить всё
$dt1 = [777]; // Дата начала
$dt2 = [888]; // Дата окончания
// Отсекаем часы, минуты и секунды (если есть)
$tek_dt1 = mktime(0,0,0,date('m',$dt1),date('d',$dt1),date('Y',$dt1));
$tek_dt2 = mktime(0,0,0,date('m',$dt2),date('d',$dt2),date('Y',$dt2)) + 86400;
$cursor = $tek_dt1;
$i = 0;
// Считываем праздничные даты, приводим их к формату unix и помещаем в масиив
$check_holidays = db_query('select * from app_holidays where 1');
foreach ($check_holidays as $key => $value) {
$arr[$i]['start'] = strtotime($value['start_date']);
$arr[$i]['end'] = strtotime($value['end_date']);
$i++;
}
// Вычисляем кол-во праздничных дней
foreach ($arr as $key => $value) {
$start = $value['start'];
$end = $value['end'];
$flag = 0;
$cursor = $tek_dt1;
while ($flag == 0) {
if ($cursor >= $start && $cursor <= $end) {
$holidays += 1;
}
if ($cursor >= $end) {
$flag = 1;
}
$cursor += 86400;
}
}
$diap = ($tek_dt2 - $tek_dt1) / 86400; // Количество дней в текущем периоде
$diff_days = $diap - $holidays; // Разница в днях
$output_value = $diff_days;