(22s or 27s, 17b, etc) Calculate day of week from 1901 to 2099
02-20-2022, 03:36 PM
Post: #1
 arhtur Junior Member Posts: 14 Joined: Jun 2021
(22s or 27s, 17b, etc) Calculate day of week from 1901 to 2099
On the HP 22s, with no branching or loops, little more than equations are possible on it. However, using a creatively written equation, it is possible to calculate the day of the week from 1901 to 2099 and also handle leap years.

To calculate the first day of a year, F, we use the following formula:

F=(IP( 1.25 x (Year + 3)) + 2) mod 7

Since the HP 22s does not have the mod function, we can use:

a mod b = FP( a / b ) x b

So

F=FP( (IP( 1.25 x (Year + 3)) + 2) / 7) x 7

To determine which day each month begins with, we add:

( 530526416330 / 10^(Month-1) ) mod 10 or FP( ( 530526416330 / 10^(Month-1) ) / 10) x 10

Finding if a year is a leap year (0=non leap year, 1=leap year)

1-IP( (y mod 4)/4+.75 ) or 1-IP(FP(y/4)+.75)

Adding an extra day after February for leap years (0 for months 1 and 2, and 1 for months 3 and beyond)

IP(IP(M / 3) / 4 + .75)

Bringing it all together, for the HP 22s (spaces added for ease of viewing)

W=FP( ( IP(1.25 x (Y+3)) + 2 + FP( IP(530526416330 / 10^(M-1)) / 10) x 10 + D - 1 + (1 - IP( FP(Y/4) + .75)) x IP( IP(M/3) / 4 +.75)) /7)x7

Or on the 27s, 17B, etc.:

W=MOD( IP( 1.25 x (Y+3)) + 2 + MOD( IP( 530526416330 / 10^(M-1)):10) + D - 1 + (1-IP( FP(Y/4) +.75)) x IP( IP(M/3)/4+.75):7)

For the number returned, 0=Sunday, 1=Monday, 2=Tuesday … 6=Saturday
02-20-2022, 06:09 PM
Post: #2
 Steve Simpkin Senior Member Posts: 838 Joined: Dec 2013
RE: (22s or 27s, 17b, etc) Calculate day of week from 1901 to 2099
That is amazing for such a limited machine. Brilliant!
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)