Como subtrair datas?
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.
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
Curtidas 0
Respostas
Marco Salles
14/04/2004
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:
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:
Conclusão:Para Subtrair datas éntão fica fácil
Código:
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
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
GOSTEI 0
Rômulo Barros
14/04/2004
Tenta fazer isto no ORACLE . vai dar pau.... :lol:
GOSTEI 0
Marco Salles
14/04/2004
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...
GOSTEI 0
Ltres
14/04/2004
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;
GOSTEI 0
Tusuariocomponent
14/04/2004
Obrigadão galera.
Conseguí resolver o meu problema.
Valeu mesmo.
Conseguí resolver o meu problema.
Valeu mesmo.
GOSTEI 0
Marco Salles
14/04/2004
Marco Salles:
LTres;
[b:64801eebb0]Esta me referindo exatamente a esta função, e conclui:[/b:64801eebb0]
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...
GOSTEI 0