D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
html
/
crsys_ant
/
Filename :
teste_diautil.php
back
Copy
<?php // ================= CONFIGURAÇÃO ================= $data_contrato = '2026-03-30'; $dias_medicao = 5; $empr_id = 1; // ================= MOCK DE FERIADOS ================= // Simulando tabela gre_feriado $feriados_db = [ ['data' => '2026-04-03', 'empr_id' => 1], // sexta (feriado) ['data' => '2026-04-07', 'empr_id' => 1], // terça (feriado) ]; // filtra por empresa $feriados = []; foreach ($feriados_db as $f) { if ($f['empr_id'] == $empr_id) { $feriados[] = $f['data']; } } // transforma para busca rápida $feriados = array_flip($feriados); // ================= CÁLCULO ================= $data = new DateTime($data_contrato); $contador = 0; echo "<pre>"; echo "Data contrato: {$data_contrato}\n"; echo "Dias úteis a somar: {$dias_medicao}\n\n"; while ($contador < $dias_medicao) { $data->modify('+1 day'); $diaSemana = $data->format('N'); // 1 a 7 $dataStr = $data->format('Y-m-d'); // verifica $isFimSemana = ($diaSemana >= 6); $isFeriado = isset($feriados[$dataStr]); echo "Verificando: {$dataStr} "; if ($isFimSemana) { echo "(fim de semana)\n"; continue; } if ($isFeriado) { echo "(feriado)\n"; continue; } $contador++; echo "✔ dia útil #{$contador}\n"; } // resultado final $data_limite_medicao = $data->format('Y-m-d'); echo "\n================ RESULTADO ================\n"; echo "Data limite medição: {$data_limite_medicao}\n";