Un par de funciones útiles para trabajar con fechas.

Obteniendo las fechas del primer y último día del mes de una fecha dada

Copyright © 2000 Ernesto De Spirito

EurekaLog - Capture y registre cada excepción!

FDOM y LDOM

FDOM devuelve la fecha que corresponde al primer día del mismo mes que la fecha pasada como parámetro, mientras LDOM devuelve la fecha que corresponde al último día de ese mes (restando 1 de la fecha que corresponde al primer día del siguiente mes de la fecha dada).

uses SysUtils;

function FDOM(Date: TDateTime): TDateTime;
var
  Year, Month, Day: Word;
begin
  DecodeDate(Date, Year, Month, Day);
  Result := EncodeDate(Year, Month, 1);
end;

function LDOM(Date: TDateTime): TDateTime;
var
  Year, Month, Day: Word;
begin
  DecodeDate(Date, Year, Month, Day);
  // (if Month < 12 then inc(Month)
  // else begin Month := 1; inc(Year) end;
  // Result := EncodeDate(Year, Month, 1) - 1;
  Result := EncodeDate(Year, Month,
            MonthDays[IsLeapYear(Year), Month]);
end;

Llamada de ejemplo

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DateToStr(FDOM(Now)));
  ShowMessage(DateToStr(LDOM(Now)));
end;
JfControls Library - para Delphi y C++ Builder