Path: 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 Date: 08 August 1989, 11:34:56 SET From: Cornelius Caesar BITNET / EARN: I0908 at DKAFHS1 To: info-atari16 at score.stanford.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