Somar um mês
Tenho um problema, por exemplo, supondo que uma variável data_fech = 12/09/2003. Eu preciso que some um mês, mas que o resultado seja dia todo dia 10 e o mês somado ao mês referido na data da variável.
Por favor me ajudem!!!!!
Por favor me ajudem!!!!!
Mozill@
Curtidas 0
Respostas
Wbb
27/08/2003
Você pode usar a função IncMonth(), entrando com o formato de data dd/mm/yyyy (como, 10/06/2003). Faça da seguinte maneira:
Edit2.Text := DateToStr(IncMonth(StrToDate(Edit1.Text), 1));
Onde: ´1´, no fim da linha de código, é o número de meses que você quer que sejam acrescentados.
wbb
Edit2.Text := DateToStr(IncMonth(StrToDate(Edit1.Text), 1));
Onde: ´1´, no fim da linha de código, é o número de meses que você quer que sejam acrescentados.
wbb
GOSTEI 0
Marcelo Saviski
27/08/2003
Para incrementar um mês em uma data use a função IncMonth
mas se não for isso, então esquece, não consegui interpretar muito bem a sua dúvida
100+
mas se não for isso, então esquece, não consegui interpretar muito bem a sua dúvida
100+
GOSTEI 0
Bacalhau
27/08/2003
Comecemos por pegar na data exemplo: 12/09/2003. Queres transformar isto em 10/10/2003, ou seja incrementar o mês mas sempre no dia 10.
Partindo do princípio que é isto, cá vai:
var mes : integer;
ano : integer;
// vou capturar o mês da data
mes := strtoint(copy(data,4,2));
// vou capturar o ano da data
ano := strtoint(copy(data,7,4));
// se não for Dezembro incremento o mes
if ((mes >1) and (mes < 12)) then mes := mes + 1
else
begin
// É dezembro. Tenho de colocar o mes = 1 e incrementar o ano
mes := 1;
ano := ano + 1;
end;
// agora escrevo na data final
// se data_final é uma string fica assim
data_final := ´10/´ + inttostr(mes) + ´/´ + inttostr(ano);
// se data_final é TDatetime fica assim
data_final := strtodate(´10/´ + inttostr(mes) + ´/´ + inttostr(ano));
Abraço do bacalhau
Partindo do princípio que é isto, cá vai:
var mes : integer;
ano : integer;
// vou capturar o mês da data
mes := strtoint(copy(data,4,2));
// vou capturar o ano da data
ano := strtoint(copy(data,7,4));
// se não for Dezembro incremento o mes
if ((mes >1) and (mes < 12)) then mes := mes + 1
else
begin
// É dezembro. Tenho de colocar o mes = 1 e incrementar o ano
mes := 1;
ano := ano + 1;
end;
// agora escrevo na data final
// se data_final é uma string fica assim
data_final := ´10/´ + inttostr(mes) + ´/´ + inttostr(ano);
// se data_final é TDatetime fica assim
data_final := strtodate(´10/´ + inttostr(mes) + ´/´ + inttostr(ano));
Abraço do bacalhau
GOSTEI 0
Mozill@
27/08/2003
:D Muito obrigado pessoal pela força!!! :D
GOSTEI 0
Midas
27/08/2003
var
dt_venc:tdate;
dd,mm,aa:word;
mes:string;
begin
dt_venc:=strtodate(edit1.Text);
dt_venc:=incmonth(dt_venc,1);
decodedate(dt_venc,aa,mm,dd);
mes:=inttostr(mm);
if Length(inttostr(mm))=1 then
mes:=´0´+inttostr(mm);
if (dd>6) and (dd<=15) then
begin
edit2.Text:=´10´+´/´+mes+´/´+inttostr(aa);
end;
if (dd>16) and (dd<=25) then
begin
edit2.Text:=´20´+´/´+mes+´/´+inttostr(aa);
end;
if (dd>26) and (dd<=5) then
begin
edit2.Text:=´30´+´/´+mes+´/´+inttostr(aa);
end;
dt_venc:tdate;
dd,mm,aa:word;
mes:string;
begin
dt_venc:=strtodate(edit1.Text);
dt_venc:=incmonth(dt_venc,1);
decodedate(dt_venc,aa,mm,dd);
mes:=inttostr(mm);
if Length(inttostr(mm))=1 then
mes:=´0´+inttostr(mm);
if (dd>6) and (dd<=15) then
begin
edit2.Text:=´10´+´/´+mes+´/´+inttostr(aa);
end;
if (dd>16) and (dd<=25) then
begin
edit2.Text:=´20´+´/´+mes+´/´+inttostr(aa);
end;
if (dd>26) and (dd<=5) then
begin
edit2.Text:=´30´+´/´+mes+´/´+inttostr(aa);
end;
GOSTEI 0
Midas
27/08/2003
deu certo ?
GOSTEI 0