JohnBsB 0 Denunciar post Postado Agosto 31, 2016 Prezados, Estou quebrando a cabeça para uma solução e não sei como resolver. Preciso listar as horas e verificar se determinadas horas e minutos estão dentro de X e Y e riscar Por exemplo $X = "08:00" $Y = "18:00" $hora_marcada = array("13:15", "14:02", "16:27", "19:00"); resultado 08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00 ... Alguem sabe como posso criar essa função em PHP? Obrigado!!! John Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Agosto 31, 2016 Utilize a função strtotime( ), ela permite efetuar cálculos com data e hora facilmente... Dá uma olhada na documentação oficial do PHP... Mas nos mostre como está fazendo para ajudarmos a melhorar seu código (e não fazer por você... -_- ). Abraço Compartilhar este post Link para o post Compartilhar em outros sites
JohnBsB 0 Denunciar post Postado Agosto 31, 2016 Caro Paulo, obrigado pelo retorno Na verdade eu preciso de uma lógica somente, mas veja como pensei: Esse código monta as horas como preciso, até ai eu sei fazer tranquilo <?php $inicio_trabalho = "08:00"; $finaliza_trabalho = "18:00"; $period = new DatePeriod( new DateTime($inicio_trabalho), new DateInterval('PT1H'), new DateTime($finaliza_trabalho) ); foreach ($period as $date) { $new .= "<div>".$date->format("H:i")."</div>"; } echo $new; Agora a parte de verificar se a hora está entre os horários específicos, se estiver, ele risca, se não, exibe normal. $agendado = "12:59"; $data1 = DateTime::createFromFormat('H:i', $agendado); $data2 = DateTime::createFromFormat('H:i', $inicio_trabalho); $data3 = DateTime::createFromFormat('H:i', $finaliza_trabalho); if ($data1 > $data2 && $data1 < $data3) { echo '<div class="risco">'.$agendado.'</div>'; }else{ echo $agendado; } Agora a dúvida, como eu faço para juntar estas duas funções? a de listar e a de riscar. Precisava ter mais horas agendadas e no momento não sei fazer algo como array para riscar outras horas, a função que montei só risca uma... Abraço! Compartilhar este post Link para o post Compartilhar em outros sites
Paulo de Tarso F. M. 24 Denunciar post Postado Setembro 1, 2016 Bom, logicamente falando, você precisa fazer o seguinte: esse cálculo precisa estar dentro do foreach de $period. Tentei montar algum exemplo mas não consegui (por questões de tempo). Nunca usei as funções DateTime, nem conhecia o DatePeriod... A comparação tem sempre que ser entre o horário que você está inserindo no loop (08:00, 09:00, 10:00, etc.) e esse horário mais 1 hora, definido assim o intervalo. Monte um array com os horários agendados e coloque dentro do foreach também: $agendamentos = array('09:37', '11:45', '12:59', '15:41'); foreach ($period as $date) { $class_risco = ''; // Percorre os horários agendados e verifica se há algum agendamento para esse intervalo foreach($agendamentos as $agendado) { // Aqui você precisa calcular se $agendado está entre $date e $date + 1, e aplica o risco if(bla bla bla) { $class_risco = ' class="risco"'; } } $new .= '<div'.$class_risco.'>'.$date->format("H:i").'</div>'; } Abraço! Compartilhar este post Link para o post Compartilhar em outros sites