Ir para conteúdo

POWERED BY:

Arquivado

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

_vina

soma de datas

Recommended Posts

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

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

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

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

: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

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

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

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

×

Informação importante

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