Estou com um problema em uma aplicação onde recebo duas datas e retorno os dias entre essas datas. Por exemplo: Se passar as datas 01/05/2007 e 20/08/2007 será retornado todos os dias entre essas datas no padrão d/mm/aaaa. Até aí tudo bem, o código abaixo funciona perfeitamente. O problema é que se no período passado contiver as datas 05/11/2007, 03/11/2008, 01/11/2009, 07/11/2010, 07/11/2011, 05/11/2012 (em cada ano existe um dia do mês de novembro), o período retornado compreendi a data inicial e data final menos um dia.
Segue código:
//Monta lista com os valores de dia, mes e ano das variaveis passadas por post
list ($dia1, $mes1, $ano1) = split ('[/.-]', $p_dt_inicio);
list ($dia2, $mes2, $ano2) = split ('[/.-]', $p_dt_fim);
//Monta timestamp da data inicial
$inicio=mktime(0, 0, 0, $mes1,$dia1,$ano1);
//Monta timestamp da data final
$fim=mktime(0, 0, 0, $mes2,$dia2,$ano2);
//Faz um loop com todos os dias dentro do intervalo passado
Espero que alguém consiga me ajudar, pois já fiz vários testes sem sucesso.
Identifiquei que no loop, o cálculo do strtotime está correto, mesmo nas datas que me trazem problema, porém o $x nõ recebe o valor da data final passada.
Pergunta
flahuds
Amigos,
Estou com um problema em uma aplicação onde recebo duas datas e retorno os dias entre essas datas. Por exemplo: Se passar as datas 01/05/2007 e 20/08/2007 será retornado todos os dias entre essas datas no padrão d/mm/aaaa. Até aí tudo bem, o código abaixo funciona perfeitamente. O problema é que se no período passado contiver as datas 05/11/2007, 03/11/2008, 01/11/2009, 07/11/2010, 07/11/2011, 05/11/2012 (em cada ano existe um dia do mês de novembro), o período retornado compreendi a data inicial e data final menos um dia.
Segue código:
//Monta lista com os valores de dia, mes e ano das variaveis passadas por post
list ($dia1, $mes1, $ano1) = split ('[/.-]', $p_dt_inicio);
list ($dia2, $mes2, $ano2) = split ('[/.-]', $p_dt_fim);
//Monta timestamp da data inicial
$inicio=mktime(0, 0, 0, $mes1,$dia1,$ano1);
//Monta timestamp da data final
$fim=mktime(0, 0, 0, $mes2,$dia2,$ano2);
//Faz um loop com todos os dias dentro do intervalo passado
for($x=$inicio;$x<=$fim;$x=strtotime("+1 day", $x)){
echo " Data: " . date("d/m/Y", $x) . "<br>";
}
Espero que alguém consiga me ajudar, pois já fiz vários testes sem sucesso.
Identifiquei que no loop, o cálculo do strtotime está correto, mesmo nas datas que me trazem problema, porém o $x nõ recebe o valor da data final passada.
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.