Ir para conteúdo

POWERED BY:

Arquivado

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

Joao Marcos_173092

Boleto bancario

Recommended Posts

Olá pessoal, por favor estou com uma imensa duvida.

Desenvolvi um carnê para boleto bancario, sendo a data de hoje + 30 dias.

sendo que preciso colocar agora uma caixa de texto para pegar a data de geração + 30.

Por exemplo o boleto com o codigo abaixo, gera HOJE+30. preciso colocar $datavenc + 30.

não consigo de jeito algum. por favor alguem me ajuda ;(

for($i = 0, $meses = 1 ;$i < $parcelas; $i++, $meses++){
  
 
 
 $dadosboleto["data_vencimento"] = date("d/m/Y", strtotime("now +".$meses." months"));
a duvida esta justamente abaixo, como posso colocar uma variavel em "NOW", por exemplo $_POST["Data"];, e calcular com o strtotime +30.
Muito obrigado!
$dadosboleto["data_vencimento"] = date("d/m/Y", strtotime("now +".$meses." months"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode usar o objeto DateTime para manipular datas.

 

Primeiro você tem que criar um objeto de data, por exemplo:

- Se a sua data de vencimento ($datavenc) estiver no formato d/m/Y

 

$dataVencimento = DateTime::createFromFormat('d/m/Y', $datavenc);

 

Agora você pode adicionar 30 dias:

 

$dataVencimento->add(new DateInterval('P30D'));

 

Pronto, agora você pode converter para qualquer formato, supondo que você quer converter devolta para d/m/Y

 

$datavenc = $dataVencimento->format('d/m/Y');

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa função só está disponivel a partir da versão 5.3 do php, nesse caso você vai ter que converter o formato da data para depois poder somar:

list($dia, $mes, $ano) = explode('/', $datavenc);
$datavenc2 = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
$datavenc = date('d/m/Y', strtotime($datavenc2 . " + 1 month"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os outros carne estão com a mesma data do primeiro? no meu exemplo eu sempre somei apenas 1 mês, mas no seu exemplo você soma a váriavel $meses:

list($dia, $mes, $ano) = explode('/', $datavenc);
$datavenc2 = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
$datavenc = date('d/m/Y', strtotime($datavenc2 . " +$meses month"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, no primeiro exemplo que eu te passei ele não estava somando a váriavel meses, estava "+1 month", no segundo exemplo que eu te passei (no último post) eu corrigi para "+$meses month", você fez essa alteração? se sim poste o código aqui para análise.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo anderson, no primeiro exemplo ele repetiu venccarne em todos os boletos,

o segundo tambem.

 

	$meses = 1;

	 

	list($dia, $mes, $ano) = explode('/', $datavenc);

	$datavenc2 = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);

	$datavenc = date('d/m/Y', strtotime($datavenc2 . " +$meses month"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa! que erro eu fiz...

segue o correto:

*A variavel meses esta pegando o for

 

for($i = 0, $meses = 1 ;$i < $parcelas; $i++, $meses++){
 
 
list($dia, $mes, $ano) = explode('/', $datavenc);
$datavenc2 = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
$datavenc = date('d/m/Y', strtotime($datavenc2 . " +meses month"));
 
 
}

Anderson, tava tentando fazer assim:

más da erro ;(

 

	$dadosboleto["data_vencimento"] = date("d/m/Y", strtotime("$datavenc +".$meses." months"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o nome correto da váriavel? $datavenc ou $vencarne, no exemplo que segue abaixo está funcionando:

 

 

$data_inicio = '10/10/2010'; // pode ser hoje: date('d/m/Y'), mas estou supondo que o usuário digita o ínicio
 
// convertemos o formato da data
list($dia, $mes, $ano) = explode('/', $data_inicio);
$data_inicio_2 = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
 
for($meses = 1; $meses <= 12; $meses++)
{
    $soma = $meses - 1;
    $data_vencimento = date('d/m/Y', strtotime("$data_inicio_2 +$soma months"));
    var_dump($data_vencimento);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

então soma a $venccarne,

 

Vou estabelecar o meu ponto de vista:

- A váriavel $datavenc possui a primeira data de vencimento, vamos supor que o carnê começa '10/10/2013'

- A váriavel $venccarne vai possuir a data de vencimento da parcela atual

- A váriavel $meses possui o o número da parcela atual (começando por 1)

 

logo só precisamos que a váriavel $venccarne seja igual a {$datavenc} + {$meses - 1} meses

 

dentro do loop de parcelas (sendo $meses o número da a parcela, começando por 1)

list($dia, $mes, $ano) = explode('/', $datavenc);
$venccarne = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
$soma = $meses - 1;
$venccarne = date('d/m/Y', strtotime("$venccarne +{$soma} month"));

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um echo e posta o que ele mostrou:

echo "Estamos na parcela $meses <br />\n";
echo "Começamos na data $datavenc <br />\n";
list($dia, $mes, $ano) = explode('/', $datavenc);
$venccarne = sprintf('%04d-%02d-%02d', $ano, $mes, $dia);
$soma = $meses - 1;
$venccarne = date('d/m/Y', strtotime("$venccarne +{$soma} months"));
echo "Nesta parcela a data de vencimento é $venccarne";

O correto seria imprimir isso, (no meu exemplo, começando 10/10/2013):

Estamos na parcela 1
Começamos na data 10/10/2013
Nesta parcela a data de vencimento é 10/10/2013
 
Estamos na parcela 2
Começamos na data 10/10/2013
Nesta parcela a data de vencimento é 10/11/2013
 
Estamos na parcela 3
Começamos na data 10/10/2013
Nesta parcela a data de vencimento é 10/12/2013
 
...

Se o número da parcela se repetir o problema está na váriavel $meses

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.