program DaysUntilChristmas;
{$mode objfpc}
uses
SysUtils, DateUtils;
//
// ---------------------------------------------------------
// Function: DaysUntilChristmas
// Purpose : Calculate how many days remain until Christmas.
// ---------------------------------------------------------
//
function DaysUntilChristmas: Integer;
var
Today : TDateTime;
Year : Word;
Month : Word;
Day : Word;
Christmas : TDateTime;
begin
// Get today's date from the system
Today := Date;
// Extract year, month, day from today's date
DecodeDate(Today, Year, Month, Day);
// Build a date for Christmas of the current year
Christmas := EncodeDate(Year, 12, 25);
// If Christmas already passed this year, calculate for next year
if Today > Christmas then
Christmas := EncodeDate(Year + 1, 12, 25);
// Calculate difference in days
Result := DaysBetween(Christmas, Today);
end;
//
// ---------------------------------------------------------
// Main program
// ---------------------------------------------------------
//
begin
WriteLn('Days until Christmas: ', DaysUntilChristmas);
end.
(*
run:
Days until Christmas: 211
*)