How to add N weeks to a given date in Pascal

1 Answer

0 votes
program AddWeeksExample;

{$mode objfpc}{$H+}

uses
  SysUtils, DateUtils;

{**
 * Adds a specified number of weeks to a given TDateTime value.
 * 
 * @param ADate  The base date as TDateTime.
 * @param AWeeks The number of weeks to add (can also be negative to subtract).
 * @return       The resulting TDateTime date.
 *}
function AddWeeksToDate(const ADate: TDateTime; AWeeks: Integer): TDateTime;
begin
  // IncWeek safely adds weeks while managing leap years, 
  // month-end boundaries, and year rollovers automatically.
  Result := IncWeek(ADate, AWeeks);
end;

var
  BaseDate: TDateTime;
  ResultDate: TDateTime;
  WeeksToAdd: Integer;
begin
  // Initialize a sample date: November 8, 2026
  BaseDate := EncodeDate(2026, 11, 8);
  WeeksToAdd := 4;

  // Perform the addition
  ResultDate := AddWeeksToDate(BaseDate, WeeksToAdd);

  // Display the formatted results
  Writeln('Original date:        ', FormatDateTime('yyyy-mm-dd', BaseDate));
  Writeln('After adding ', WeeksToAdd, ' weeks: ', FormatDateTime('yyyy-mm-dd', ResultDate));
end.


(*
run:

Original date:        2026-11-08
After adding 4 weeks: 2026-12-06

*)

 



answered 20 hours ago by avibootz
...