Converção de String da Data

Delphi

31/03/2009

Por favor, alguém me ajude.
converto uma string em data e depois retiro o dia, ano e mês para calcular outras datas só que o ano não fica no formato correto quando converto para integer por exemplo converto 2009 para integer vira 217, utilizei as funções Strtoint e Formatdattime e o erro persiste.


Regito

Regito

Curtidas 0

Respostas

Lehapan

Lehapan

31/03/2009

para melhor lhe ajudar, coloque a rotina que está ocorrendo o erro.


GOSTEI 0
Sebastiaoarm

Sebastiaoarm

31/03/2009

procedure exemplo;
var
  Data: TDateTime;
  Ano,
  Mes,
  Dia: Integer;
begin
  Data := Now;
  Ano := YearOf(Data);
  Mes := MonthOf(Data);
  Dia := DayOf(Data);
  { ... }
end;


Isso?


GOSTEI 0
Sebastiaoarm

Sebastiaoarm

31/03/2009

procedure exemplo;
var
  Data: TDateTime;
  Ano,
  Mes,
  Dia: String;
begin
  Data := Now;
  Ano := IntToStr(YearOf(Data));
  Mes := IntToStr(MonthOf(Data));
  Dia := IntToStr(DayOf(Data));
  { ... }
end;


Agora, sim!


GOSTEI 0
Pestana_

Pestana_

31/03/2009

você tambem poderia fazer assim:

var
ano, mes, dia : word;
begin
DecodeDate(now, ano, mes, dia);
ShowMessage(IntToStr(dia)+´/´+IntToStr(mes)+´/´+IntToStr(ano));
end;


GOSTEI 0
Regito

Regito

31/03/2009

Por favor, já usei a função YearOf(Data); mas acontece o mesmo erro a rotina é a seguinte:
var
i , bissexto, Ano, Mes, Dia: Integer;

begin
Dia:= StrToInt(Copy(DBprimeiroPagamento.Text, 1,2);
Mes:= StrToInt(Copy(DBprimeiroPagamento.Text, 4,2);
Ano:=:= StrToInt(Copy(DBprimeiroPagamento.Text, 7,4);

Entrando a data 10/04/2009, fica o seguinte resultado:
Dia = 10
Mes = 4
Ano = 217

Depois disto eu cálculo datas futuras adicionando um ao mês.

Aproveitando o tópico queria saber se tem como fazer que o mês fique 04 e não só 4.
Obrigado.


GOSTEI 0
Sebastiaoarm

Sebastiaoarm

31/03/2009

var
  Data: String;
  Ano,
  Mes,
  Dia: Integer;
begin
  Data := ´10/04/2009´;
  Dia := StrToInt(Copy(Data, 1, 2));
  Mes := StrToInt(Copy(Data, 4, 2));
  Ano := StrToInt(Copy(Data, 7, 4));
  { ... }
  ShowMessage(IntToStr(dia)+´/´+IntToStr(mes)+´/´+IntToStr(ano));
end;


Certeza? Acabei de testar o código acima e deu certo.

Antes de executar o código, insira:

  ShowMessage(DBprimeiroPagamento.Text);


E veja qual a data exibida.


GOSTEI 0
Regito

Regito

31/03/2009

Valew pela ajuda gente.
Consegui aqui movi o campo db para uma variável string e efetuei tratamento sobre esta ai deu certos.
Valew.


GOSTEI 0
Rodc

Rodc

31/03/2009

Aproveitando o tópico queria saber se tem como fazer que o mês fique 04 e não só 4.

ShortDateFormat := ´DD/MM/YYYY´;



GOSTEI 0
Regito

Regito

31/03/2009

Valeu!!!
Deu certo!!


GOSTEI 0
POSTAR