Calendar math is an exercise in modulo arithmetic. See
<http://www.gpsworld.com/gnss-system/innovation-gps-numbers-9741?page_id=5>
for a peek into the topic.
-- Richard Langley
Quoting Tony Finch <d...@dotat.at>:
On Tue, 25 Jan 2011, John Pickard wrote:
If you need to check days of weeks for arcane dates, JoneSoft Date
Calculator
is a free program that will give you the day of the week for just about any
date, and the number of days between two specific dates.
You only need about two lines of code to turn a Gregorian date into a
count of days, and from that it's trivial to get the day of the week or
the interval between to dates. Of course it's no use for historical dates
when you need to care about old style vs. new style, never mind the
confusion caused by nautical or astronomical notations!
The following takes a date in conventional notation and returns a "rata
die" day number, as defined by Reingold and Dershowitzin in "Calentrical
Calculations" (published by Cambridge University Press). Their formulae
are rather more general than mine and not so optimised for brevity.
Mon 0001-01-01 (according to the proleptic Gregorian calendar) is R.D. 1
Wed 1858-11-17 is R.D. 678576 and Modified Julian Day number 0
The remainder after dividing an RD by 7 is the day of the week, numbered
from zero (Sunday) to six (Saturday).
int gregorian_to_rd(int y, int m, int d) {
if (m > 2) m += 1; else m += 13, y -= 1;
return y*1461/4 - y/100 + y/400 + m*153/5 + d - 428;
}
gregorian_to_rd(2011,1,25) == 734162
734162 % 7 == 2
The reverse calculation is rather more complicated! A couple of years
ago I wrote up detailed explanations of how these calculations work:
http://fanf.livejournal.com/93326.html
http://fanf.livejournal.com/93771.html
Tony.
--
f.anthony.n.finch <d...@dotat.at> http://dotat.at/
HUMBER THAMES DOVER WIGHT PORTLAND: NORTH BACKING WEST OR NORTHWEST, 5 TO 7,
DECREASING 4 OR 5, OCCASIONALLY 6 LATER IN HUMBER AND THAMES. MODERATE OR
ROUGH. RAIN THEN FAIR. GOOD.
---------------------------------------------------
https://lists.uni-koeln.de/mailman/listinfo/sundial
===============================================================================
Richard B. Langley E-mail: l...@unb.ca
Geodetic Research Laboratory Web: http://www.unb.ca/GGE/
Dept. of Geodesy and Geomatics Engineering Phone: +1 506 453-5142
University of New Brunswick Fax: +1 506 453-4943
Fredericton, N.B., Canada E3B 5A3
Fredericton? Where's that? See: http://www.city.fredericton.nb.ca/
===============================================================================
---------------------------------------------------
https://lists.uni-koeln.de/mailman/listinfo/sundial