Article View: comp.sys.atari.st
Article #2957Re: Julian date
From: I0908
Date: Tue, 08 Aug 1989 11:58
Date: Tue, 08 Aug 1989 11:58
109 lines
5465 bytes
5465 bytes
Date: 08 August 1989, 11:34:56 SET
From: Cornelius Caesar BITNET / EARN: I0908 at DKAFHS1
To: info-atari16 at score.stanford.edu
<pwp@iuvax.cs.indiana.edu> wrote two weeks ago:
> The Julian day number is the number of days since 4004 BC or when ever it was
> that someone calculated that God created the earth. This system was developed
> by astronomers who need to deal with historical records recorded under
> different calander systems. Thus someone studying some old record can
> translate the dates to Julian days and other astronomers who know nothing
> about the calcander used in the original record can understand the date. 4004
> BC is far enough back that all historical records recieve a positive Julian
> date.
> ^...! (stuff deleted)
This is not quite true. The base date of the Julian day number is
Jan. 1, 4713 BC (or -4712 since the year 0 does not exist in the
historical year count). And there is of course a reason why Joseph
Scaliger (1540-1609) choose this date:
(I have to use some specific words which I don't know a correct translation
of, thus I give the german original in parentheses. What follows is taken
from the book "Bekanntes & Unbekanntes aus der Kalenderwissenschaft" from
Heinz Zemanek (IBM Fellow and Prof. at the TU Wien), R. Oldenbourg Verlag,
Muenchen 1978; and it's long ...)
Sun Circle (Sonnenzirkel) is a cycle of 28 years since every 28 years the
same dates are on the same week days throughout the year. (4 leap-year
cycle times 7 days per week.) It is defined as SC=(year+9)%28 (% is the
remainder operator as in C). I don't know the reason for the +9 offset.
Moon Circle (Mondzirkel) is a cycle of 19 years, also called the Meton
period, because Meton suggested in 433 BC to use 12 years with 12 months
each and 7 years with 13 months (months have 29 or 39 days), after which
dates could repeat without too much difference against the astronomy.
The Christian church used the Moon circle for the computation of the
Easter date. It is also called Golden Number (Goldene Zahl) and is
defined as GN=(year+1)%19.
These two cycles multiplied give 532 years, the so called Easter cycle,
because after that time every Easter sunday would have the same weekday
(without considering a slight shift called "Epakte").
The ancient romans had a cycle of 15 years, after which time a new tax
count had to be made. It is called "Indiktion" (from latin: indictio,
decree or order), was also used for other purposes (which?) and is
defined as IN=(year+3)%15.
Now Scaliger multiplied the length of the Easter cycle with the indictio,
which yields 532*15=7980 years. He also found an epoch, such that every
year gives the right SC, GN, or IN remainder when divided by 28, 19, or
15. And this epoch is Jan. 1, 4713 BC (you guessed that already, didn't
you?). It's also true, that this is a convenient date for all historical
purposes.
Example: 1989 has the SC: 10, GN: 14, and IN: 12 (as of the above formulas).
1989+4713 = Julian Year 6702, divided by 28 or 19 or 15 gives the
same values for the remainders (without formulas).
By the way: The present Julian day is 2,447,747 = Aug. 8, 1989.
There is more to say about this, but I don't think it belongs to this
group. Thank you for reading this far| Your reward:
Here is a piece of a program to compute the date of Easter sunday
for any given year (don't know what happens for years BC, not reasonable
anyway) which I made some time ago. It is slightly modified from a formula
from Carl Friedrich Gauss.
++++++++++++++++++++++++++++++cut here++++++++++++++++++++++++++++++++++++
/* Compute the date of Easter sunday for any year */
/* Based on the formula of Carl Friedrich Gauss */
/* Cornelius Caesar February 22, 1988 */
void easter( year )
int year;
{
int month, day, a, n, m;
if (year < 1583) {
n = 6; m = 15; } /* switch to julian calendar */
else {
n = year/100-year/400+4; /* switch to Gregorian calendar */
m = n-year/300+11; }
a = (((year%19)*19)+m)%30;
day = (((year%4)*2+(4*year)+(6*a)+n)%7)+a-9;
if (day<1) {
month = 3; /* March */
day += 31; }
else {
month = 4; /* April */
if ((day==26) ((day==25)&&(a==28)&&((11*(m+1)%30)<19)))
day -= 7; /* correction: one week earlier */
}
printf("Easter sunday is %d/%d/%d\n", month, day, year);
}
++++++++++++++++++++++++++++++cut here++++++++++++++++++++++++++++++++++++
This looks somewhat cryptic, but it works and is useful for calendar
programs. Gauss took a base date (March 21, 1700) and from this adds
the required number of days depending on some other formulas (the above
mentioned Sun Circle and Golden Number and "Epakten" and others; it is
explained in the reprint of his papers).
I just compacted his description for use in a program. INT's need only
be 16 bit wide. Hopefully somebody likes it|
Cornelius
Technical Details
Message-ID:
<8908081158.AA17494@ucbvax.Berkeley.EDU>Path:
arc1-ca.pugleaf.net!utzoo!utgpu!watmath!att!ucbvax!DKAFHS1.BITNET!I0908Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!watmath!att!ucbvax!DKAFHS1.BITNET!I0908 From: I0908@DKAFHS1.BITNET Newsgroups: comp.sys.atari.st Subject: Re: Julian date Message-ID: <8908081158.AA17494@ucbvax.Berkeley.EDU> Date: 8 Aug 89 11:58:17 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 109 X-Unparsable-Date: Tue, 08 Aug 89 11:38:48 SET