Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maykel-ctba

[Resolvido] Erro em DatePeriod - PHP encontra 2 meses ao invés de 3

Recommended Posts

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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().

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.