fork download
  1. <?php
  2.  
  3. // Define o intervalo da manhã:
  4. $hora_manha_min = new DateTime("08:00");
  5. $hora_manha_max = new DateTime("12:00");
  6.  
  7. // Define o intervalo da tarde:
  8. $hora_tarde_min = new DateTime("13:00");
  9. $hora_tarde_max = new DateTime("18:00");
  10.  
  11. // Intervalo de 15 minutos:
  12. $intervalo = new DateInterval("PT15M");
  13.  
  14. // Lista de todos os horários:
  15. $horarios = [];
  16.  
  17. // Adiciona na lista os horários da manhã com intervalo de 15 minutos:
  18. $temp = clone $hora_manha_min;
  19.  
  20. while ($temp <= $hora_manha_max)
  21. {
  22. $horarios[] = $temp;
  23. $temp = clone $temp;
  24. $temp->add($intervalo);
  25. }
  26.  
  27. // Adiciona na lista os horários da tarde com intervalo de 15 minutos:
  28. $temp = clone $hora_tarde_min;
  29.  
  30. while ($temp <= $hora_tarde_max)
  31. {
  32. $horarios[] = $temp;
  33. $temp = clone $temp;
  34. $temp->add($intervalo);
  35. }
  36.  
  37. // Horários ocupados:
  38. $ocupado_1_ini = new DateTime("09:00");
  39. $ocupado_2_ini = new DateTime("10:45");
  40.  
  41. // Remove da lista os horários ocupados:
  42. if(($key = array_search($ocupado_1_ini, $horarios)) !== false) {
  43. echo "Removendo ", $horarios[$key]->format("H:i"), PHP_EOL;
  44. unset($horarios[$key]);
  45. }
  46.  
  47. if(($key = array_search($ocupado_2_ini, $horarios)) !== false) {
  48. echo "Removendo ", $horarios[$key]->format("H:i"), PHP_EOL;
  49. unset($horarios[$key]);
  50. }
  51.  
  52. // Imprime um horário aleatório:
  53. echo $horarios[array_rand($horarios)]->format("H:i"), PHP_EOL;
Success #stdin #stdout 0s 83904KB
stdin
Standard input is empty
stdout
Removendo 09:00
Removendo 10:45
13:45