fork(1) download
  1. <?php
  2. function get_ciclo($dia_inicial=21, $dia_final=20, $data_referencia) {
  3. $mes = date('m', $data_referencia) - 1; // começa no mês anterior
  4. $ano = date('Y', $data_referencia);
  5. if (date("d", $data_referencia) < $dia_inicial) {
  6. $mes--; // // nesse caso, volta mais um mês
  7. }
  8. return array(
  9. date("Y-m-d", mktime(0, 0, 0, $mes, $dia_inicial, $ano)),
  10. date("Y-m-d", mktime(0, 0, 0, $mes + 1, $dia_final, $ano))
  11. );
  12. }
  13.  
  14. $dia_inicial = 21;
  15. $dia_final = 20;
  16. $mes = 10;
  17. $ano = 2021;
  18. while (true) {
  19. // gera o ciclo do mês atual
  20. print_r(get_ciclo($dia_inicial, $dia_final, mktime(0, 0, 0, $mes, $dia_inicial, $ano)));
  21.  
  22. // avança um mês
  23. $data = mktime(0, 0, 0, $mes + 1, $dia_inicial, $ano);
  24. $mes = date('m', $data);
  25. $ano = date('Y', $data);
  26. if ($ano == 2022 && $mes == 10) // 09/2022 é o último mês, se chegou em 10/2022, encerra
  27. break;
  28. }
  29.  
Success #stdin #stdout 0.03s 26088KB
stdin
Standard input is empty
stdout
Array
(
    [0] => 2021-09-21
    [1] => 2021-10-20
)
Array
(
    [0] => 2021-10-21
    [1] => 2021-11-20
)
Array
(
    [0] => 2021-11-21
    [1] => 2021-12-20
)
Array
(
    [0] => 2021-12-21
    [1] => 2022-01-20
)
Array
(
    [0] => 2022-01-21
    [1] => 2022-02-20
)
Array
(
    [0] => 2022-02-21
    [1] => 2022-03-20
)
Array
(
    [0] => 2022-03-21
    [1] => 2022-04-20
)
Array
(
    [0] => 2022-04-21
    [1] => 2022-05-20
)
Array
(
    [0] => 2022-05-21
    [1] => 2022-06-20
)
Array
(
    [0] => 2022-06-21
    [1] => 2022-07-20
)
Array
(
    [0] => 2022-07-21
    [1] => 2022-08-20
)
Array
(
    [0] => 2022-08-21
    [1] => 2022-09-20
)