How to compute the day of the week for January 1st of any given year in Pascal

1 Answer

0 votes
program Jan1Weekday;

{$mode objfpc}{$H+}{$J-}

{
    This program determines the day of the week for January 1st of a given year.

    Approach:
    ---------
    Free Pascal provides built‑in date/time routines in the SysUtils unit:
        - EncodeDate(Y, M, D) : converts a calendar date into a TDateTime value
        - DayOfWeek(Date)     : returns the weekday number (1..7)

    DayOfWeek meaning:
        1 = Sunday
        2 = Monday
        3 = Tuesday
        4 = Wednesday
        5 = Thursday
        6 = Friday
        7 = Saturday

    This avoids manual calendar arithmetic and uses efficient built‑in routines.
}

uses
    SysUtils;

function WeekdayName(DayNum: Integer): String;
begin
    case DayNum of
        1: Result := 'Sunday';
        2: Result := 'Monday';
        3: Result := 'Tuesday';
        4: Result := 'Wednesday';
        5: Result := 'Thursday';
        6: Result := 'Friday';
        7: Result := 'Saturday';
    else
        Result := 'Unknown';
    end;
end;

function Jan1Weekday(Year: Integer): String;
var
    DateValue: TDateTime;
    W: Integer;
begin
    { Encode January 1st of the given year }
    DateValue := EncodeDate(Year, 1, 1);

    { DayOfWeek returns 1..7 }
    W := DayOfWeek(DateValue);

    { Convert numeric weekday to readable name }
    Result := WeekdayName(W);
end;

var
    year: Integer;
    resultStr: String;

begin
    year := 2026;

    resultStr := Jan1Weekday(year);
    WriteLn('January 1st, ', year, ' falls on a ', resultStr, '.');
end.



{
run:

January 1st, 2026 falls on a Thursday.

}

 



answered 11 hours ago by avibootz

Related questions

...