🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: soc.history.science
1 messages
1 total messages Started by lachman Mon, 15 Mar 2010 21:58
METHOD TO CALCULATE THE DAY OF THE WEEK FOR DATES AS OF 15.x.1582
#81
Author: lachman
Date: Mon, 15 Mar 2010 21:58
130 lines
5340 bytes
  METHOD TO CALCULATE THE DAY OF THE WEEK FOR DATES AS OF 15.x.1582
 - using Hans Lachman's Method of Congruence as generalised below -

   This is a more involved method to calculate the day of the week
   for Gregorian calendar dates from 15.x.1582 and as far into the
   future as workable using standard four-function calculators (or
   mental simulations thereof) via a generalised formula requiring
   fewer key-clicks than any previous method (not using tables).

Given:

Day.Month.Year as a Date on the Gregorian calendar as of
 15.octob.1582
   &
 YLJLD as the 'Year in which the Last Julian Leap Day occurred' prior to
 the given Date as if for a Julian Calendar whose years begin on 1.jan.
   &
 Century as a nominal "age" for each hundred of years as of 1.march.XY00
 (only one Lag offset thereby required for an entire Gregorian Century)
 so that if YLJLD = XYQR, then Century = XY (starting with Century 15);
   &
 delta as the difference between the Year and YLJLD,
 delta = Year - YLJLD;

one can convert the given Date into a day of the week after completing
 the 4 steps below--using 44 key-clicks or less.


STEP 0. Calculate the Lag of the identical Julian Date:

        Integer(Century/4) + 2 - Century

 Step 0.a  Calculate Integer(Century/4)

  Divide Century by 4. If the result has a decimal portion, re-
  -enter just the integer portion;

 Step 0.b

  Continue with the remainder of the formula; and remember the
  result, or store it in Memory for later use in Step 2.


STEP 1. Calculate the given Date's MonthIndex:

        Month * 2.56 + 93

 and then drop the fraction, and the hundreds digit, if any,
 e.g. 123.72 becomes 23, to get an integer less than 100.


STEP 2. Apply the generalised date conversion formula:

       (YLJLD/.8 + delta + MonthIndex + Day + Lag) / 7

(This also converts any Julian Date as of 1.iii.IV; Because
 the "identical Julian date" is the same, it has no Lag.)


STEP 3. Apply Hans' calculator-keypad mapping:

 Take the first digit after the decimal point (if none, use 0)
 and map that to a day using the following pattern:

  +-----+-----+-----+
  | Fri | Sat |     |
  |  7  |  8  |  9  |
  +-----+-----+-----+
  | Wed | Thu |     |
  |  4  |  5  |  6  |
  +-----+-----+-----+
  | Mon | Tue |     |
  |  1  |  2  |  3  |
  +-----+-----+-----+
  | Sun |
  |  0  |
  +-----+

(This is equivalent to assigning days to remainders of divisions by 7
 as for:  Sun=0  Mon=1  Tue=2  Wed=3  Thu=4  Fri=5  Sat=6.)


 Lag is the number of days that a Gregorian date to be converted falls before
 the same Julian date. It was zero for Century 02, during which the Gregorian
 Calendar, if already implemented beforehand, would have been the same as the
 Julian--thus leading to Hans' Julian Step 2 formula. It must be decreased by
 1 for every March 1st preceded by February 29th in the Julian but not in the
 Gregorian calendar. Lag is now -13 and will be -14 as of 1.iii.MMC to start
 off Century 21, when the shorter Julian formula applies again for Gregorian
 dates, the last time being in Centuries 11 & 12 when it was -7 in both. In
 Century 00 as of 1.iii.IV, it was +2, which is why 2 is added in Step 0.


EXAMPLE 0.  December 12th, 287  YLJLD = 284  delta = 3  Century = 2
  2/4 = 0.5
  Lag = 0 + 2 - 2 = 0
  12 * 2.56 + 93 = 123.72 (MonthIndex = 23)   
  284 /.8 + 3 + 23 + 12 (+ 0) = 393
  Divide by 7 = 56.142857...
  first decimal =  1   Day of Week = Mon


EXAMPLE 1.  December 31st, 2100  YLJLD = 2100  delta = 0  Century = 21
  21/4 = 5.25
  Lag  = 5 + 2 - 21 = -14  (in effect = 0 as in Julian formula)
  12 * 2.56 + 93 = 123.72 (MonthIndex = 23)
  2100 /.8 (+ 0) + 23 + 31 (+ 0) = 2679
  Divide by 7 = 382.714285...
  first decimal  =  7  Day of Week = Fri


EXAMPLE 2.  February 29th, 2000  YLJLD = 1996  delta = 4  Century = 19
  19/4 = 4.75
  Lag  = 4 + 2 - 19 = -13
  2 * 2.56 + 93 = 98.12 (MonthIndex = 98)
  1996 /.8 + 4 + 98 + 29 - 13 = 2613
  Divide by 7 = 373.285714...
  first decimal  =  2  Day of Week = Tue


EXAMPLE 3.  March 1st, 2000  YLJLD = 2000  delta = 0  Century = 20
  20/4 = 5 (no need to re-enter)
  Lag  = " + 2 - 20 = -13
  3 * 2.56 + 93 = 100.68 (MonthIndex = 0)
  2000 /.8 (+ 0 + 0) + 1 - 13 = 2488
  Divide by 7 = 354.428571...
  first decimal  =  4  Day of Week = Wed

--
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads