Trabalhando com Datas e Horas no Delphi

 Vamos aporsentar três rotinas envolvendo data e horários no Delphi que vai ajudar a você a desenvolver as suas próprias rotinas, são elas: 1 – Comparando dois horários; 2 – Operação com horários; 3 – Alterando a Data e Hora do Sistema.

1 – Comparando dois horários

Função que retorna se a primeira hora é maior ou menor que a segunda. Recebe duas entradas e retorna como resultado ou “maior” ou “menor”. A comparação é feita com a Primeira em relação a Segunda.

function ComparaHora(Primeira,Segunda : String):String;

var

Prim,Segu : TDateTime;

begin

    Prim := StrToTime(Primeira);

    Segu := StrToTime(Segunda);

If (Prim > Segu) then 

   begin

      Result := ‘maior’;

  end

else

   begin

      Result := ‘menor’;

  end;

end;

2 – Operação com horários

Função que retira dez minutos de um horário e retorna o novo horário com os dez minutos a menos. No exemplo repare que a quantidade de hora, minuto ou segundo tem que ter o mesmo formato aceito pelo sistema: HH:MM:SS. Neste caso retiramos dez minutos do horário original, mas podemos fazer a operação que quisermos, bastando, neste exemplo, modificar a variável que quisermos.

function TiraDez(Hora: String):String;

var

Prim : TDateTime;

Dez: TDateTime;

begin

   Prim := StrToTime(Hora);

   Dez := StrToTime(’00:10:00′);

   Result := TimeToStr(Prim-Dez);

end;

3 – Alterando a Data e a Hora do Sistema

Função que retira dez minutos de um horário e retorna o novo horário com os dez minutos a menos. No exemplo repare que a quantidade de hora, minuto ou segundo tem que ter o mesmo formato aceito pelo sistema: HH:MM:SS. Neste caso retiramos dez minutos do horário original, mas podemos fazer a operação que quisermos, bastando, neste exemplo, modificar a variável que quisermos.

Function SystemDateTime(tDate: TDateTime; tTime: TDateTime): Boolean;

var

   tSetDate: TDateTime;

   vDateBias: Variant;

   tSetTime: TDateTime;

   vTimeBias: Variant;

  tTZI: TTimeZoneInformation;

  tST: TSystemTime;

begin

  GetTimeZoneInformation(tTZI);

  vDateBias := tTZI.Bias / 1440;

  tSetDate := tDate + vDateBias;

  vTimeBias := tTZI.Bias / 1440;

  tSetTime := tTime + vTimeBias;

  with tST do

    begin

       wYear := StrToInt(FormatDateTime(‘yyyy’, tSetDate));

       wMonth := StrToInt(FormatDateTime(‘mm’, tSetDate));

       wDay := StrToInt(FormatDateTime(‘dd’, tSetDate));

       wHour := StrToInt(FormatDateTime(‘hh’, tSettime));

       wMinute := StrToInt(FormatDateTime(‘nn’, tSettime));

       wSecond := StrToInt(FormatDateTime(‘ss’, tSettime));

       wMilliseconds := 0;

    end;

SystemDateTime := SetSystemTime(tST);

end;

Plínio Cruz
Analista de Sistemas – Consultor em Informática

Compatilhe esse artigo!

2 thoughts on “Trabalhando com Datas e Horas no Delphi

Leave a Reply

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.