Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Galera, preciso de ajuda...
Tenho o seguinte script:
$dataInicioJob = "2016-05-31 00:00:00"
$inicio = new DateTime(format_date($dataInicioJob,"d-m-Y"));
$intervalo = new DateInterval('P1M');
$fim = new DateTime(date("d-m-Y"));
$periodoArray = new DatePeriod($inicio, $intervalo, $fim);
Deveria retornar os meses MAIO/JUNHO/JULHO no $periodoArray, pois são os meses que passam entre estas datas.
Mas está retornando somente Maio e Julho...
O que faço?
Entendi!
Pensei algo nessa lógica mesmo. Porém, consegui a solução através de:
$intervalo = DateInterval::createFromDateString('first day of next month');
Um dos fatos sobre o assunto são as recorrências (e não ocorrências), por isso gera tanta dúvida. O DatePeriod trabalha com recorrências entre os períodos, o que é diferente de ocorrência.
Não há erro algum.
O DatePeriod contempla o "período entre". O período entre é considerado tudo que for diferente de zero da data final pressupondo-se a data inicial (assim como expediente de trabalho). Lembre-se que são considerações de tempo e não de valores numéricos.
Se for considerar o expediente de trabalho: 08:00 - 12:00. Você não trabalhou no horário 12:00. Basta realizar o cálculo: 11:59 - 12:00 (1 minuto). 12:00 - 12:00 (0 minuto). Não há como ter "zero minuto(s)".
Veja bem, a data final é: 2016-05-31 00:00:00. Ou seja, até 2016-05-30 23:59:59.999 é considerado um período válido, após isso, não mais.
Se você quer utilizar a data final, use o método DatePeriod::getEndDate().