Tratando Incremento e Decremento de Campos Data/Hora

Fala galera, beleza?

Para efetuarmos o incremento ou decremento em valores de Data/Hora, utilizaremos algumas propriedades que explicaremos um pouco melhor abaixo, as funções são encontradas na Unit DateUtils, que será necessário ser declarada para que o Delphi encontre as funções.

Não existe as funções DecMillisecond, DecSecond, DecMinute, DecDay, DecMonth, DecYear. Para esses casos, utilizaremos as respectivas funções passando como parâmetro um valor negativo.


  • Incrementos de Milisegundos (IncMillisecond)
var
  minhaData : TDateTime;
begin

    // Configure nossa data para o início de 2020
    minhaData := EncodeDateTime(2020, 1, 1, 0, 0, 0, 0);
    ShowMessage('Data = '+DateTimeToStr(minhaData));

    // Adicionar 5000 milisegundos na data/hora
    minhaData := IncMillisecond(minhaData, 5000);
    ShowMessage('Data + 5000 milisegundos = ' + DateTimeToStr(minhaData));

    // Subtrair 1000 milisegundos na data/hora
    minhaData := IncMillisecond(minhaData, -1000);
    ShowMessage('Data - 1000 milisegundos = '+ DateTimeToStr(minhaData));
end;

Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 01/01/2020’
A 2º mensagem: ‘Data + 5000 milisegundos = 01/01/2020 00:00:05’
A 3º mensagem: ‘Data – 1000 milisegundos = 01/01/2020 00:00:04’


  • Incremento de Segundos (IncSecond)
var
   minhaData : TDateTime;
 begin
   // Configure nossa data para o fim de 2020
   minhaData := EncodeDateTime(2005, 12, 31, 23, 59, 0, 0);
   ShowMessage('Data = '+ DateTimeToStr(minhaData));

   // Adicionar 60 segundos na data/hora
   myDate := IncSecond(myDate, 60);
   ShowMessage('Data +  60 segundos = '+DateTimeToStr(minhaData));

   // Subtrair 120 segundos na data/hora
   minhaData := IncSecond(minhaData, -120);
   ShowMessage('Data - 120 segundos = '+DateTimeToStr(minhaData));
 end;

Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 31/12/2020 23:59:00’
A 2º mensagem: ‘Data + 60 segundos = 01/01/2021’
A 3º mensagem: ‘Data – 120 segundos = 31/12/2020 23:58:00’


  • Incremento de Minutos(IncMinute)
var
   minhaData : TDateTime;
 begin
   // Defina nossa data antes do final do ano 2020
   minhaData := EncodeDateTime(2020, 12, 31, 23, 0, 0, 0);
   ShowMessage('Data = '+DateTimeToStr(minhaData));

   // Adicionar 100 minutos na data
   minhaData := IncMinute(minhaData, 100);
   ShowMessage('Data + 100 minutos = '+DateTimeToStr(minhaData));

   // Subtrair 40 minutes na data
   minhaData := IncMinute(minhaData, -40);
   ShowMessage('Data -  40 minutos = '+DateTimeToStr(minhaData));
 end;

Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 31/12/2020 23:00:00’
A 2º mensagem: ‘Data + 100 minutos = 01/01/2021 00:40:00’
A 3º mensagem: ‘Data – 40 minutos = 01/01/2021’


  • Incremento de Dias(IncDay)
var
   MinhaData : TDateTime;
 begin
   // Defina nossa data antes do final do ano 2020
   MinhaData := EncodeDate(2020, 12, 30);
   ShowMessage('Data = '+DateToStr(MinhaData));

   // Adicinar 10 dias na data
   MinhaData := incDay(MinhaData, 10);
   ShowMessage('Data + 10 Dias = '+DateToStr(MinhaData));

   // Subtrair 12 dias na data
   MinhaData := incDay(MinhaData, -12);
   ShowMessage('Data - 12 Dias = '+DateToStr(MinhaData));
 end;

Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 30/12/2020’
A 2º mensagem: ‘Data + 10 dias = 09/01/2021’
A 3º mensagem: ‘Data – 12 dias = 29/12/2020’


  • Incremento de Meses(IncMonth)
var
   minhaData : TDateTime;
 begin
   minhaData := StrToDate('31/01/2000');   //Fim de Janeiro em ano bissexto
   ShowMessage('Data = ' + DateToStr(minhaData)); 

   // Incrementar em 1 (padrão)
   // 31/Janeiro/2000 ==> 31/Fevereiro/2000 (ilegal) ==> 29/Fevereiro/2000
   minhaData := IncMonth(minhaData);
   ShowMessage('Data + 1 mês = ' + DateToStr(minhaData));

   // Incrementar em 12 meses
   // 29/Fevereiro/2000 ==> 29/Fevereiro/2000 (ilegal) ==> 28/Fevereiro/2001
   minhaData := IncMonth(minhaData, 12);      // Incrementar em 12 meses
   ShowMessage('Data + 12 meses = ' + DateToStr(minhaData));
 end;

Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 31/01/2000’
A 2º mensagem: ‘Data + 1 mês = 29/02/2000’
A 3º mensagem: ‘Data + 12 meses = 28/02/2001’


  • Incremento de Ano(IncYear)
var
   minhaData : TDateTime;
 begin
   // Configure nossa data para um dia especial de ano bissexto
   minhaData := EncodeDate(2000, 02, 29);
   ShowMessage('Data = '+DateToStr(minhaData));

   // Adicionar 2 anos na data
   minhaData := IncYear(minhaData, 2);
   ShowMessage('Data + 2 Anos = '+DateToStr(minhaData));

   // Subtrair 2 anos na data
   minhaData := IncYear(minhaData, -2);
   ShowMessage('Data - 2 Anos = '+DateToStr(minhaData));
 end;

Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 29/02/2000’
A 2º mensagem: ‘Data + 2 Anos = 28/02/2002’
A 3º mensagem: ‘Data – 2 Anos = 28/02/2000’

Sobre Filipe Santana

Programador Delphi desde 2012

Publicado em 27 de janeiro de 2021, em Delphi, Funções, TEdit e marcado como , , , , , , , , , . Adicione o link aos favoritos. Deixe um comentário.

Deixe um comentário