Daysbetween maluco !!!

Delphi

09/02/2004

Amigos,

Alguém sabe me dizer o pq da minha função Daysbetween retorna um numero totalmente louco ?
Estou usando o código abaixo:
 
datamaior := strtodate(DataNasc);
datamenor := strtodate dmData.qryDiarioDia.Fields0].AsString); 
//as datas retornadas estão corretas
showmessage(datetostr(datamaior)); 
showmessage(datetostr(datamenor));

DBTDia.Caption := inttostr(DaysBetween(datamenor,datamaior));


Estou usando para teste as datas 04/06/1952 e 24/05/1952, que teria q me retornar 12 dias (diferença entre essas duas datas)...só que o programa me retorna 36514.

Já tentei a DaySpan e trunquei o resultado, deu na mesma...alguém me ajuda...já não sei mais o q fazer...


Ana Davis

Ana Davis

Curtidas 0

Respostas

Beppe

Beppe

09/02/2004

[quote:54b815b402=´Ana Davis´]Amigos,

Alguém sabe me dizer o pq da minha função Daysbetween retorna um numero totalmente louco ?
Estou usando o código abaixo:
 
datamaior := strtodate(DataNasc);
datamenor := strtodate dmData.qryDiarioDia.Fields0].AsString); 
//as datas retornadas estão corretas
showmessage(datetostr(datamaior)); 
showmessage(datetostr(datamenor));

DBTDia.Caption := inttostr(DaysBetween(datamenor,datamaior));


Estou usando para teste as datas 04/06/1952 e 24/05/1952, que teria q me retornar 12 dias (diferença entre essas duas datas)...só que o programa me retorna 36514.

Já tentei a DaySpan e trunquei o resultado, deu na mesma...alguém me ajuda...já não sei mais o q fazer...[/quote:54b815b402]

Sei lá, tentou inverter, assim:
DaysBetween(datamaior,datamenor)



GOSTEI 0
Ana Davis

Ana Davis

09/02/2004

Já inverti, já usei a data direto na função, tipo daysbetween(´04/06/1952´, ´24/05/1952´)
Tá muito louco....
Tudo que eu queria era q fosse feita a subtração e retornasse o numero de dias entre uma e outra, só isso, tá dificil !


GOSTEI 0
Beppe

Beppe

09/02/2004

Caption := IntToStr(DaysBetween(StrToDate(´24/05/1952´), StrToDate(´04/06/1952´)));


Pra mim retorna 11, pra ti não?

Pode ser que alguma configuração de localização esteja errada...


GOSTEI 0
Fabio.hc

Fabio.hc

09/02/2004

Tente assim:

procedure TForm1.Button12Click(Sender: TObject);
var dias:integer;
begin
   dias:=DaysBetween(strtodate(´04/06/1952´),strtodate(´24/05/1952´));
end;



GOSTEI 0
Ana Davis

Ana Davis

09/02/2004

Amigos,

descobri o que fazia a daysbetween retorna um número tão absurdo. Na verdade, não existia nada de absurdo, a função estava retornando o valor correto. Vou explicar: a data que eu capturo do form esta no formato dd/mm/yyyy, enquanto a data q eu seleciono da tabela está no formato dd/mm/yy. Por isso me voltava um valor enorme.
Agora que já sei onde está o problema, queria saber como faço pra configurar as datas da tabela para se tornarem dd/mm/yyyy ??? Estou usando uma simples tabela em paradox. A coluna data está em formato data.


GOSTEI 0
Fabio.hc

Fabio.hc

09/02/2004

Tente assim:

procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
   ShortDateFormat:=´dd/mm/yyyy´;
end;



GOSTEI 0
Ana Davis

Ana Davis

09/02/2004

Valeu Fábio funcionou que foi uma beleza ! Obrigada mesmo !


GOSTEI 0
POSTAR