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

===========================================================================
 BBS: The Beta Connection
Date: 06-07-93 (00:10)             Number: 773
From: CYRUS PATEL                  Refer#: 744
  To: STEPHEN WHITIS                Recvd: NO  
Subj: DATE CALCULATIONS              Conf: (232) T_Pascal_R
---------------------------------------------------------------------------
SW>Does anyone know where I can find an algorithm, or better yet TP
SW>5.5 code, to calculate the day of the week for a give date?

Here's TP source for day of the week...

Const
   CurrentYear = 1900;

Type
   DateStr: String[8];


Procedure ConvDate(DateStr: DateRecord;
                   Var Month, Day, Year: Word);

 {this converts the date from string to numbers for month, day, and year}

  Var
    ErrorCode: Integer;

  Begin
    Val(Copy(DateStr, 1, 2), Month, ErrorCode);
    Val(Copy(DateStr, 4, 2), Day, ErrorCode);
    Val(Copy(DateStr, 7, 2), Year, ErrorCode);
    Year := Year + CurrentYear
  End;


Function Dow(DateStr: DateRecord): Byte;

   {this returns the Day Of the Week as follows:
         Sunday is 1, Monday is 2, etc...  Saturday is 7}

  Var
    Month, Day, Year, Y1, Y2: Word;

  Begin
    ConvDate(DateStr, Month, Day, Year);
    If Month < 3 then
      Begin
      Month := Month + 10;
      Year := Year - 1
      End
    else
      Month := Month - 2;
    Y1 := Year Div 100;
    Y2 := Year Mod 100;
    Dow := ((Day + Trunc(2.6 * Month - 0.1) + Y2 + Y2 Div 4 + Y1 Div 4 - 2 *
           Y1 + 49) Mod 7) + 1
  End;


Here's an example of how to use it...

Begin
   Case Dow('06/06/93') of
     1: Write('Sun');
     2: Write('Mon');
     3: Write('Tues');
     4: Write('Wednes');
     5: Write('Thurs');
     6: Write('Fri');
     7: Write('Satur')
   End;
   WriteLn('day')
End.


SW>And I just know I've run across an algorithm or code to do this
SW>before, but it was a while back, and I've looked in the places I
SW>thought it might have been.  Any ideas?

You might want to take a look at Dr. Dobbs from a few months back
(earlier this year), they had an whole issue related to dates

Cyrus
---
 þ SPEED 1ú30 #666 þ 2!  4!  6!  8!  It's time to calculate!  2 24 720 40,32
 * Midas Touch of Chicago 312-764-0591/0761 DUAL STD
 * PostLink(tm) v1.06  MIDAS (#887) : RelayNet(tm) Hub

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