Olá pessoal nesta Quick irei mostrar como utilizar as funções DaysInAMonth, DaysBetween, DayOf entre outras.
Obtendo a diferença de dias entre duas datas usando a função DaysBetween()
Em algumas situações nós precisamos saber a diferença de dias entre duas datas. Para isso podemos usar a função DaysBetween(), presente na unit DateUtil. Esta função recebe dois objetos TDateTime e retorna um inteiro contendo a quantidade de dias entre as duas datas.
Observe, no entanto, que a função DaysBetween() retorna apenas a quantidade de dias completos, ou seja, as horas, minutos, segundos e milisegundos são incluídos no cálculo dos dias. Se faltar apenas um segundo para completar um dia, tal dia não será incluído na contagem. Veja um exemplo de seu uso:
procedure TForm1.Button1Click(Sender: TObject);
var
data1, data2: TDateTime;
quant_dias: Integer;
begin
// vamos criar as duas datas, observe que as horas
// também foram definidas
// primeira data: 12/01/2010 às 09:10:15
data1 := EncodeDateTime(2010, 1, 12, 9, 10, 15, 0);
// segunda data: 15/01/2010 às 19:10:15
data2 := EncodeDateTime(2010, 1, 15, 19, 10, 15, 0);
// vamos obter a quantidade de dias entre as duas datas
quant_dias := DaysBetween(data1, data2);
// mostra o resultado
ShowMessage('A diferença de dias é: ' + IntToStr(quant_dias));
end;
Como obter a quantidade de dias para um determinado mês e ano
Em algumas situações precisamos saber a quantidade exata de dias que um determinado mês possui. Para isso, podemos usar a função DaysInAMonth(), presente na unit DateUtils. Esta função recebe dois inteiros representando o ano e o mês e retorna um valor inteiro que representa a quantidade de dias para tal mês. Veja um exemplo:
procedure TForm1.Button1Click(Sender: TObject);
var
mes, ano, dias_mes: Integer;
begin
mes := 2;
ano := 2010;
// vamos obter a quantidade de dias para o mês de
// fevereiro de 2010
dias_mes := DaysInAMonth(ano, mes);
// exibe o resultado
ShowMessage('O mês informado possui ' + IntToStr(dias_mes) +
' dias');
end;
Este trecho de código nos informará que o mês de fevereiro de 2010 possui 28 dias. Note que os argumentos para a função DaysInAMonth() devem estar dentro da faixa permitida. Para o ano, os valores devem estar entre 1 e 9999 (inclusive) e para o mês os valores devem estar entre 1 e 12 (inclusive).
Obtendo o dia do mês para uma determinada data
Em algumas situações precisamos extrair apenas o dia do mês de uma determinada data. Para isso podemos usar as funções DayOfTheMonth() e DayOf(), ambas contidas na unit DateUtils.
Estas funções retornam um valor inteiro na faixa de 1 a 31. Veja, por exemplo, como obter o dia do mês da data atual:
procedure TForm1.Button1Click(Sender: TObject);
var
hoje: TDateTime;
dia_mes: integer;
begin
// não esqueça de incluir DateUtils no uses
// vamos receber a data de hoje
hoje := Now;
// vamos obter o dia do mês
dia_mes := DayOf(hoje);
// vamos exibir o resultado
ShowMessage('O dia do mês é: ' + IntToStr(dia_mes));
end;
É importante notar que ambas as funções DayOfTheMonth() e DayOf() esperam um valor do
tipo TDateTime representando a data cujo mês queremos extrair.
Vou ficando por aqui, na próxima continuaremos trabalhando com Data no Delphi
Um abraço
Rubens Antunes