Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal, preciso de uma ajuda no seguinte cenário:
Tenho um formulário com 8 checkbox (Seg, Ter, Qua, Qui, ---, Sab, Dom e Feriado), ou seja, voce pode selecionar mais de um.
Selecionando os dias especificos que o usuário quiser, ele irá informar a hora que deseja (00:00 às 23:59).
Só que tem um porém, cada dia precisa completar 24h, se ele nao completar as 24h preenchida, tenho que informar os horarios disponiveis para cadastro.
>
Exemplo:
Selecionei (Seg)
Hora Cadastrada: 18:00 -> 20:00
Horario Disponivel:
00:00 às 17:59 -> 20:01 às 23:59
Cadastrei mais um horario pra Seg
Hora Cadastrada : 13:00 -> 17:59
Horario Disponivel:
00:00 às 12:59 -> 20:01 às 23:59
Não posso deixar ele terminar o cadastro sem ter preenchido as 24h do dia selecionado.
Não tenho nenhum código pronto, pois nao tenho ideia de como fazer isso.
Desde já, obrigado.
Perfeito, me ajudou muito, só que acabei ficando com mais dúvidas. =/
Vamos supor que eu deseje trabalhar com segundos, o que eu mudaria no código ?
Muito Obrigado pelo retorno e pela ajuda.
altere o parâmetro de DateInterval.
Outro ponto, são as recorrências fixas (1439), você pode utilizar um período de tempo, conforme mostra o manual:
http://php.net/manual/en/dateperiod.construct.php
Uma explicação mais completa pode encontrar nos links abaixo:
http://pt.stackoverflow.com/a/165385/5007
http://forum.imasters.com.br/topic/550659-erro-em-dateperiod-php-encontra-2-meses-ao-inves-de-3/
Entretanto, vai ficar um processo muito oneroso.
Beleza, Obrigado.
Não tem muito mistério. Sua divisão, a princípio, é por minuto. Um dia possui 1440 minutos. O PHP traduz isso como um minuto mais 1439 recorrências.
{Basicamente, a função irá passar minuto a minuto do dia, e verificar se naquele minuto existe o horário marcado (essa lógica é sua responsabilidade). Caso não possuir, ele irá adiciona a uma lista de período.
A lista final pode ser algo assim:
$emptyPeriod = [
['00:00' , '00:01' , '00:02' , ... , '07:59'],
['10:00' , '10:01' , '10:02' , ... , '10:29'],
['13:00' , '13:01' , '13:02' , ... , '23:59'],
];
Basicamente, existem dois períodos reservados, entre 08:00 e 09:59 e entre 10:30 e 12:59. O restante é período livre.
Com a lista acima, basta o mínimo de lógica:
foreach($emptyPeriod as $period)
{
Saída:
Horário disponível 00:00 até 07:59
Horário disponível 10:00 até 10:29
Horário disponível 13:00 até 23:59