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


salvio furbino said,
adicione o Dateutils na uses que sua vida será mais facil que isso…
Alex said,
Gostei muito, parabens.
Deixe seu comentário