Jump to content


Photo

AJUDA COM LOOP DE DATAS EM PHP

php date timezone strtotime ajuda loop for

  • Faça o login para participar
2 replies to this topic

#1 GreenOverflow

GreenOverflow

    Novato no fórum

  • Usuários
  • 11 posts
  • Sexo:Masculino

Posted 01/02/2015, 14:57

E AI GALERA BELEZA TO COM UMA DOR DE CABEÇA EM UM CÓDIGO QUE NÃO CONSIGO RESOLVER DE MANEIRA NENHUMA, GOSTARIA DA AJUDA DE VOCÊS, É O SEGUINTE, ESTOU DESENVOLVENDO UM SISTEMA DE PAGAMENTOS COMO SE FOSSE UM GERADOR DE BOLETOS, FUNCIONARIA QUASE DA MESMA FORMA, EU COLOCO A DATA DE PAGAMENTO, O VALOR DO PRODUTO E O SISTEMA GERA A LISTA DE DATAS À PARTIR DA DATA DE PAGAMENTO SOMANDO AS PARCELAS, TENHO O SEGUINTE CÓDIGO:
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?php
 
$datadepagamento = "31/01/2015";
$parcelas = "10";
for($i=0;$i<=$parcelas-1;$i++){
echo date("d/m/Y", strtotime(str_replace("/", "-", $datadepagamento)."+$i month"));
echo"<br>";
}
 
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
O RESULTADO SAI O SEGUINTE:
 
31/01/2015
03/03/2015
31/03/2015
01/05/2015
31/05/2015
01/07/2015
31/07/2015
31/08/2015
01/10/2015
31/10/2015
 
PORÉM JÁ NO MÊS DE MARÇO COMO POR **EXEMPLO** EU GOSTARIA QUE ELE RESPEITASSE A DATA ORIGINAL, MAS MANTIVESSE A ULTIMA DATA DO MÊS, E CONTINUARIA O LAÇO NORMALMENTE, JÁ TENTEI USAR O "date("t/m/Y")", MAIS SEM SUCESSO, GOSTARIA DO SEGUINTE RESULTADO:
 
31/01/2015
28/02/2015
31/03/2015
30/04/2015
31/05/2015
30/06/2015
31/07/2015
31/08/2015
30/09/2015
31/10/2015
 
AGRADEÇO DESDE JÁ A AJUDA DE VOCÊS, ABRAÇOS.

Fala galera beleza, depois de tantas tentativas um amigo meu me ajudou ele e programador e modificou o código pra mim e ficou funcionando perfeitamente da forma que eu precisava, ficou semelhante a um sistema bancário do bradesco e eu quero compartilhar com vocês caso um dia precisem, vejam como ficou:
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
<?php
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
CRÉDITOS: ANDREIKI CARANA (www.andreiki.com)
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
$datadepagamento = "31/01/2015";
$parcelas = "15";
 
//Monta e inicia o laço, inicia pelo "0" pra manter a primeira data e remove a ultima pra manter a quantidade de parcelas definida pelo usuário
for($i=0;$i<=$parcelas-1;$i++){
 
//Divide a data original para manipulação
$d = substr($datadepagamento, 0, 2); //Dia do pagamento (31)
$m = substr($datadepagamento, 3, 2); //Mês do pagamento (01)
$a = substr($datadepagamento, 6, 4); //Ano do pagamento (2015)
 
//Divide a data faturada, obtém o ultimo dia do mês e remove 3 dias no caso for dias 29,30,31
$dd = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 0, 2); //Dia do pagamento (31 -3 = 28 "+1 mês")
$mm = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 3, 2); //Mês do pagamento (01 "+1 mês")
$aa = substr(date("t/m/Y", strtotime("$d-$m-$a -3 days +$i month")), 6, 4); //Ano do pagamento (2015 "+1 mês")
 
//Verifica se a data existe pelo laço, se ela existir ela percorre normalmente, mantendo o dia original definida pelo usuário, se não existe (else) ela obtém o ultimo dia do mês e da a continuidade na "função".
if(checkdate($mm,$d,$aa)){$datafinal = "$d/$mm/$aa";}else{$datafinal = "$dd/$mm/$aa";}
 
//Printa o resultado final
echo"$datafinal<br/>";
 
//Finaliza o laço
}
 
?>
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
RESULTADO FINAL:
 
31/01/2015
28/02/2015
31/03/2015
30/04/2015
31/05/2015
30/06/2015
31/07/2015
31/08/2015
30/09/2015
31/10/2015
30/11/2015
31/12/2015
31/01/2016
29/02/2016
31/03/2016
 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


#2 amixel

amixel

    www.amixel.com

  • Usuários
  • 198 posts
  • Sexo:Masculino
  • Localidade:uruguaiana
  • Interesses:web designe asp, php, html, programas,corel,fireworks

Posted 18/03/2015, 12:00

Cara excelente contribuição!! estava procurando por um algortimos desses, pesquisei em tudo que é canto da terra, mas nenhum fazia o tratamento certo perante o mes de fevereiro e dias 31 inexistente em outros meses.


WWW.AMIXEL.COM.BR

Sistemas em PHP, JSP, ASP Soluções em Programação


MSN: alex.rs@hotmail.com

#3 Kumaiti

Kumaiti

    Normal

  • Usuários
  • 77 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 20/03/2015, 12:21

Cara excelente contribuição!! estava procurando por um algortimos desses, pesquisei em tudo que é canto da terra, mas nenhum fazia o tratamento certo perante o mes de fevereiro e dias 31 inexistente em outros meses.

 

Cara, se o post é bom, clica em CURTIR. Dessa forma o autor ganha reputação e participa das promoções que vão acontecer no futuro...







Veja alguns posts relacionados com: php, date, timezone, strtotime, ajuda, loop, for

1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq