[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]

    {Returns a string or an integer, what ever you want}
    {You fix for leap year}

    unit dow;
    interface

    const
      saDayOfWeek : array [0..6] of string =
         ('Monday','Tuesday','Wednesday','Thursday',
         'Friday','Saturday','Sunday');

    type
       spString  = ^string;

    function IntDow(yyyy,mm,dd : integer) : integer;
    function StrDow(yyyy,mm,dd : integer) : spString;

    implementation

    function IntDow(yyyy,mm,dd : integer) : integer;
       var
          iAddVal : shortint;
       begin
          if mm < 3 then iAddVal := 1 else iAddVal := 0;
          IntDow := (((3*(yyyy)-(7*((yyyy)+((mm)+9) div 12))
             div 4+(23*(mm)) div 9+(dd)+2
             +(((yyyy)-iAddVal) div 100+1)*3 div 4-16) mod 7));
       end;

    function StrDow(yyyy,mm,dd : integer): spString;
       var
          sReturnString : string;
       begin
          sReturnString := saDayOfWeek[IntDow(yyyy, mm, dd)];
          StrDow := @sReturnString;
       end;
    end.
    {test file}

    uses dow;
    begin
       write(StrDow(1995, 10,08)^);
    end.

[Back to DATETIME SWAG index] [Back to Main SWAG index] [Original]