[comp.sys.handhelds] Day of week from date

jc@atcmp.nl (Jan Christiaan van Winkel) (10/01/90)

I remember some time back someone wanted to know how to compute the day of
week from a date.

In Dr. Dobb's Journal, an elegant solution to this question is printed:
(originally published by Zeller in "Acta Mathematica" #7, Stockholm 1887 (!))

(reprinted without permission)
Given:
J=century (e.g. 19)
K=year (e.g. 90)
q=day of month
m=month BUT:
march=3, april=4,... but january is 13 of the previous year and feb. is 14
of the previous year
for example, for january 6, 1990, J is 19, K is 89, q is 6 and m is 13.

Given these variables, compute the day of week as follows (using integer 
arithmetic):

    (m + 1) * 26        K     J
q + ------------ + K + --- + --- - 2*J
         10             4     4

In this formula, all divisions are integer divisions, so discard any 
remainders.  If the formula gives a negative answer (which is possible),
keep adding 7 until a positive number is the result.
The resulting value is then 'MOD'ded by 7, and a day number results:
0=Saturday, 1=Sunday, 2=Monday and so on...

The remarkable thing about this formula is that NO if's are used to check for
leapyears and stuff like that!

Enjoy!
JC
-- 
___  __  ____________________________________________________________________
   |/  \   Jan Christiaan van Winkel      Tel: +31 80 566880  jc@atcmp.nl
   |       AT Computing   P.O. Box 1428   6501 BK Nijmegen    The Netherlands
__/ \__/ ____________________________________________________________________