Diferença entre duas datas
Veja a dica que mostra como retornar a diferença em Anos, Meses e Dias entre duas datas.
Neste artigo iremos explicar como verificar a diferença em dias, meses ou anos entre a data inicial e final, utilizando recursos que o Delphi oferece. Comece abrindo o Delphi e criando um novo formulário que irá conter os seguintes objetos:
- dois DateTimePicker;
- três Edit;
- um Button.
A tela ficará como a Figura 1.
Figura 1. Layout do novo formulário
Neste momento vamos dar um duplo click no botão calcular e, no início da unit, vamos declarar o use DateUtils. O código ficará como o da Listagem 1.
Listagem 1. Declaração do DateUtils
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, ComCtrls, DateUtils;
type
TForm2 = class(TForm)
dtInicial: TDateTimePicker;
dtFinal: TDateTimePicker;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit2: TEdit;
Label5: TLabel;
Edit3: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
end;
end.
Após a declaração, vamos começar a entender como é realizado o procedimento para o cálculo entre datas. No código da Listagem 2 estamos utilizando as funções DaysBetween, MonthsBetween e YearsBetween, ou seja, em cada uma dessas funções você passará a data inicial e final a ser calculada e retornará o valor da diferença.
Listagem 2. Declaração de funções
procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Text := IntToStr(DaysBetween(dtInicial.Date,
dtFinal.Date));
Edit2.Text := IntToStr(MonthsBetween(dtInicial.Date,
dtFinal.Date));
Edit3.Text := IntToStr(YearsBetween(dtInicial.Date,
dtFinal.Date));
end;
Você também pode incrementar a sua data, ou seja, aumentar a quantidade de dias, meses ou anos. Desta forma, o seu código ficará como o da Listagem 3.
Listagem 3. Incrementando datas
procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Text := DateToStr(IncDay(dtInicial.Date, 10));
Edit2.Text := DateToStr(IncMonth(dtInicial.Date, 10));
Edit3.Text := DateToStr(IncYear(dtInicial.Date, 10));
end;
O objeto TDateTimePicker permite que trabalhemos com hora também, ou seja, podemos alterar a sua data por hora. Para fazer isto, selecione o objeto object inspector. Altere a propriedade kind para dktime e repare que a sua data mudou para hora, conforme a Figura 2.
Figura 2. Trabalhando com horas
O formulário foi modificado para mostrar que o conceito de horas tem a mesma finalidade que o de datas. Na Listagem 4 está o código que faz o teste.
Listagem 4. Testando a conversão
procedure TForm2.Button1Click(Sender: TObject);
begin
Edit1.Text := IntToStr(HoursBetween(HrInicial.Time,
HrFinal.Time));
Edit2.Text := IntToStr(MinutesBetween(HrInicial.Time,
HrFinal.Time));
Edit3.Text := IntToStr(SecondsBetween(HrInicial.Time,
HrFinal.Time));
end;
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo