GARANTIR DESCONTO

Fórum Como subtrair datas? #225868

14/04/2004

0

Olá pessoal!
Eu queria subtrair uma data de outra e queria que a diferença de dias fosse dada em nímeros inteiros.
Alguém pode me ajudar?
Obrigado.


Tusuariocomponent

Tusuariocomponent

Responder

Posts

14/04/2004

Marco Salles

O Tipo TDate é Um Numero INTEIRO.... O Que Significa isto Significa que se voce tiver definido uma variável do tipo TDate e ela ´Valer´ Zero, corresponde a Data 30/12/1899....
Experimente Fazer:Código:

procedure TForm1.Button1Click(Sender: TObject); 
var 
data0,data1,data2:TTime; 
begin 
data0:=0; 
showmessage(DateToStr(Data0)); //data 30/12/1899 Padrão 
data1:=1; 
showmessage(DateToStr(Data1));//data 31/12/1899 
data2:=2; 
showmessage(DateToStr(Data2));//data 01/01/1900 
end; 

Isto Vem ate os dias de hoje.....E Qual a Vantagem Disto A Vantagem é Simples...É Mais Fácil Somar Ou Diminuir Inteiros do que Datas
Experimente Isto:
Código:
procedure TForm1.Button1Click(Sender: TObject); 
var 
data:TTime; 
begin 
data:=0; 
showmessage(DateToStr(Data));//data 30/12/1899 
data:=data-1; 
showmessage(DateToStr(Data));//data 29/12/1899 
data:=data+2; 
showmessage(DateToStr(Data));//data 31/12/1899 
end; 


Conclusão:Para Subtrair datas éntão fica fácil
Código:
procedure TForm1.Button1Click(Sender: TObject); 
var 
datainicial,datafinal:Tdate; 
Dias:Inteiro;
begin 
datainicial:=StrToDate(Edit1.text); 
dataFinal:=StrToDate(Edit2.text); 
dias:=DataFinal-DataInicial;
end; 


P:S Para Testar so copie e cole e F9

Obs: O Tipo TDateTime é Um Numero de ponto Flutuante...Se voce Precissar Trabalhar so com Datas Define uma Variável doTipo TDate , Se Alem Disto Voce Precissar Trabalhar Simultaneamente com Horas , defina sua variável do tipo TDateTime


Responder

Gostei + 0

14/04/2004

Rômulo Barros

Tenta fazer isto no ORACLE . vai dar pau.... :lol:


Responder

Gostei + 0

14/04/2004

Marco Salles

Tenta fazer isto no ORACLE . vai dar pau....

O [b:33594937f7]Tipo de Variável [/b:33594937f7]que me referiro é o tipo definido pelo delphi...Eu gostaria de entender sua colocação com mais detalhe :?: :?: ...Não precisa ser no ORACLE Não, Pode ser em Qualquer Banco....[b:33594937f7]Eu estou apenas Operando em cima de variáveis e não em cima de tipos defindidos por Um ou outro banco em Particula[/b:33594937f7]r...Se voce pudesse ser mais claro eu ficaria muito grato. Porque poderia estar revendo o meu conceito...Quanto a Subtrair Datas, nós todos sabemos, que existe uma função na Unit DateUtils e bla,bla,bla...So Que eu entendo, que a colocação do tipo TDate Como inteiro é um dado que deve ser levantado e muitos deixam isto por despercebido...


Responder

Gostei + 0

14/04/2004

Ltres

Cara naum entendi sua ultima colocação.... Mas na propria unit SysUtils do delphi 7 tem uma funcao chamanda DaysBetween.. veja

procedure TForm1.Button1Click(Sender: TObject);
var
  x: integer;
begin
  x := DaysBetween(Now, StrToDateTime(´1/1/2000´));
  ShowMessage(IntToStr(x));
end;



Responder

Gostei + 0

15/04/2004

Tusuariocomponent

Obrigadão galera.
Conseguí resolver o meu problema.
Valeu mesmo.


Responder

Gostei + 0

15/04/2004

Marco Salles

Marco Salles:
Quanto a Subtrair Datas, [b:64801eebb0][size=18:64801eebb0]nós todos sabemos, que existe uma função na Unit DateUtils[/size:64801eebb0][/b:64801eebb0] e bla,bla,bla...


LTres;
Cara naum entendi sua ultima colocação.... Mas na propria unit SysUtils do delphi 7 tem uma funcao chamanda DaysBetween.. veja Código: procedure TForm1.Button1Click(Sender: TObject); var x: integer; begin x := DaysBetween(Now, StrToDateTime(´1/1/2000´)); ShowMessage(IntToStr(x)); end;


[b:64801eebb0]Esta me referindo exatamente a esta função, e conclui:[/b:64801eebb0]
So Que eu entendo, que a colocação do tipo TDate Como inteiro é um dado que deve ser levantado e muitos deixam isto por despercebido...



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar