flahuds 0 Denunciar post Postado Dezembro 7, 2007 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: PHP //Monta lista com os valores de dia, mes e ano das variaveis passadas por postlist ($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. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 7, 2007 Não entendi. Explique melhor. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
flahuds 0 Denunciar post Postado Dezembro 7, 2007 Beraldo, Na execução do código acima me é retornado todos os dias no padrão dd/mm/aaaa entre as datas informadas nas variáveis $p_dt_inicio e $p_dt_fim, incluindo o valor dessas variáveis, porém quando as datas que descrevi acima constam dentro desse intervalo o valor da variável $p_dt_fim não aparece no loop. Se passar duas datas que não contenham as datas problemáticas entre elas o loop funciona corretamente, ou seja, mostra todas as datas de $p_dt_inicio até $p_dt_fim, inclusive. Espero ter conseguido me explicar. Um abraço e obrigado pela disposição em ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 7, 2007 Bernardo não, Beraldo! http://forum.imasters.com.br/public/style_emoticons/default/natal_mad.gif http://forum.imasters.com.br/public/style_emoticons/default/natal_tongue.gif hehe Eu fiz dois testes aqui e está normal. Usei estas datas: PHP $p_dt_inicio = "05/11/2007";$p_dt_fim = "01/12/2007"; PHP $p_dt_inicio = "03/11/2008";$p_dt_fim = "03/12/2008"; Ambos geraram a lista correta das datas. Poste um exemplo que está dando erro. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 7, 2007 Fiz uns testes aqui e mostrou tudo normal inclusive as datas que voce citou Compartilhar este post Link para o post Compartilhar em outros sites
flahuds 0 Denunciar post Postado Dezembro 7, 2007 Desculpe Beraldo pelo erro em seu nome. Eu só esqueci de um detalhe: Se a data inicial for um das datas problemáticas o retorno ocorre correto. O problema é se essa data estiver no intervalo entre a data inicial e data final. Se data final for problemática também da problema no retorno. Testem por favor algumas datas como: $p_dt_inicio = "03/11/2007"; $p_dt_fim = "10/11/2007"; $p_dt_inicio = "01/11/2008"; $p_dt_fim = "01/12/2008"; Observem que a data inicial é anterior as datas com problema, porém as mesmas estão dentro do intervalo passado. Pra mim, se eu passar as datas de exemplo acima retorna: 03/11/2007 a 09/11/2007 (Falta $p_dt_fim) 01/11/2008 a 30/11/2008 (Falta $p_dt_fim) Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 7, 2007 Aqui está tudo normal. Você está usando isso dentro de outro script? Teste isoladamente e veja que está certo. Talvez outra coisa esteja causando o problema. Compartilhar este post Link para o post Compartilhar em outros sites
flahuds 0 Denunciar post Postado Dezembro 7, 2007 Se executar o código que eu disponibilizei aqui no forum acontece o problema. Então não pode ser inteferencia de outro script. Isso está acontecendo tanto na máquina local quanto no servidor de minha hospedagem. Não tenho idéia do que possa ser. Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Dezembro 7, 2007 Testando com seu proprio codigo tbm esta tudo certo qual a versao do seu PHP? as vezes pode ser um bug de alguma versao que ja foi corrigida eu to usando o PHP 5.2.5 Compartilhar este post Link para o post Compartilhar em outros sites
flahuds 0 Denunciar post Postado Dezembro 7, 2007 Estou usando a versão 5.2.3. Vou atualizar e ver o que acontece. Valeu Fabyo. Compartilhar este post Link para o post Compartilhar em outros sites
flahuds 0 Denunciar post Postado Dezembro 7, 2007 Pessoal, fiz a atualização do PHP para o 5.2.5 e o script funcionou como esperado. Era algum bug do PHP. Valeu pelos testes e pela força. Um abraço. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Dezembro 7, 2007 Eu uso 5.2.3 e estava tudo certo... :unsure: enfim, problema resolvido. também preciso atualizar meu PHP... estou atrasado... http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Compartilhar este post Link para o post Compartilhar em outros sites