_vina 0 Denunciar post Postado Janeiro 4, 2007 estou tentando fazer dentro de um foruma soma de dataseu tenho a minha data inicial de esta04/01/2007ae eu queria somar elas com os numeros de parcelastipotenho 4 parcelasaae ficaria assim04/01/200704/02/200704/03/200704/04/2007alguem pode dar um HELP! Compartilhar este post Link para o post Compartilhar em outros sites
entchucs 0 Denunciar post Postado Janeiro 4, 2007 Se é só somar o mês é facil. Basta criar uma função que veja se existe o dia no mês seguinte. Caso exista tá pronto, senão tem que ver qual o próximo dia existente. Se for somar um número x de dias use a seguinte função: function somadata($dias,$datahoje){ // Desmembra Data ------------------------------------------------------------- if (ereg ("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})", $datahoje, $sep)) { $dia = $sep[1]; $mes = $sep[2]; $ano = $sep[3]; } else { echo "<b>Formato Inválido de Data - $datahoje</b><br>"; } $i = $dias; for($i = 0;$i<$dias;$i++){ if ($mes == "01" || $mes == "03" || $mes == "05" || $mes == "07" || $mes == "08" || $mes == "10" || $mes == "12"){ if($mes == 12 && $dia == 31){ $mes = 01; $ano++; $dia = 00; } if($dia == 31 && $mes != 12){ $mes++; $dia = 00; } }//fecha if geral if($mes == "04" || $mes == "06" || $mes == "09" || $mes == "11"){ if($dia == 30){ $dia = 00; $mes++; } }//fecha if geral if($mes == "02"){ if($ano % 4 == 0 && $ano % 100 != 0){ //ano bissexto if($dia == 29){ $dia = 00; $mes++; } } else{ if($dia == 28){ $dia = 00; $mes++; } } }//FECHA IF DO MÊS 2 $dia++; }//fecha o for() // Confirma Saída de 2 dígitos ------------------------------------------------ if(strlen($dia) == 1){$dia = "0".$dia;}; if(strlen($mes) == 1){$mes = "0".$mes;}; // Monta Saída ---------------------------------------------------------------- $nova_data = $dia.$mes.$ano; return $nova_data; } Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 use strtotime(), se usar funções que só some o mes nao fica legal, porque dai tem que ficar criando varias validações e para ver se o mes é igual a 12 nao virar 13 etc... e dai tbm tem que ver se virou o ano etc... a melhor função para mecher com datas é strtotime() Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 então Fabyo eu usei o strtotime so preciso de + 1 dica for($i;$i<=$parcelas;$i++){ $vencimento1 = strtotime("+".$i." month"); $vencimento1 = date("d/m/Y", $vencimento1);}eu estou usando date("d/m/Y") tem como eu trocar ele por uma variavel? $datainicial? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 sim, só converta a data da variavel para o padrao suportado pela função strtotime yyyy-mm-dd Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 hummm ok!+ fica assim $vencimento1 = date("variavel no formato (yyyy/mm/dd???)", $vencimento1); Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 nao o date ali é usado para formatar a data, voce tem que usar a variavel datainicial junto com o strtotime() Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 :mellow: veja $data2 = explode("/",$_REQUEST['txtDataParcela']);$data = $data2[2]."-".$data2[1]."-".$data2[0];//aki eu arrumei a data para o formato yyyy-mm-dd for($i=1;$i<=$parcelas;$i++){ //onde vai a variavel $data ??? $vencimento1 = strtotime("+".$i." month"); Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 strtotime("$data_inicial +$i month"); Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 a data apareceu toda errada1170554400 Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 dai voce usa date("d/m/Y", $data); para formatar for($i = 1; $i <= $parcelas; $i++){ $vencimento = strtotime("$data_inicial +$i month"); $vencimento = date("d/m/Y", $vencimento); echo $vencimento."<br />"; } Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 dai voce usa date("d/m/Y", $data); para formatarvaleu kra deu certinhomto obrigado pela ajuda http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 só uma dica pelo que voce falou de parcelas voce ta fazendo errado , por exemplo se eu compro alguma coisa parcelado a 1 parcela nao pode ser no mesmo mês que a compra. a primeira parcela será no proximo mês, agora se eu tenho que dar a 1 parcela no mesmo mês nao é parcela é entrada do seu jeito: data da compra = 04/01/2004 parcelas: 04/01/2007 04/02/2007 04/03/2007 04/04/2007 do jeito que eu fiz no ultimo exemplo: 04/02/2007 04/03/2007 04/04/2007 04/05/2007 percebeu a diferença? Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 sim percebi eu fiz um if para arrumar esse problema e deu certo (gabiarra http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif ) Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 4, 2007 nao precisava da gambiarra era só arrumar no loop Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 então o $i tava $i=1eu deixe $i=0 Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 4, 2007 apareceu 1 erro pequeno + que atrapalha tudoa data esta ficando com um espaço no finale na hora que vou transformala para jogar no banco fica assim2007 -04-02já tentei usar o str_replace + não funciono na data =/oq eu posso fazer? Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 5, 2007 nao tem como isso acontecer se voce esta usando o date para formatar a data date("d/m/Y", mas posta ai como voce ta fazendo Compartilhar este post Link para o post Compartilhar em outros sites
_vina 0 Denunciar post Postado Janeiro 5, 2007 esta assim$vencimento = strtotime("$data+$i month");<?=date("d/m/Y", $vencimento);?> Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 5, 2007 e na hora que voce esta convertendo a data para salvar no banco, como voce ta fazendo? Compartilhar este post Link para o post Compartilhar em outros sites