Subject: 關於何以1752年9月只少了11天 CopyLeft tsaiwn@csie.nctu.edu.tw 這個常識以後寫萬年曆的習題會用到! (用 gopher 找舊信也找得到) 已經有同學知道公元1752年9月少了11天, (try "cal 9 1752" on Unix) 理由是因以前誤將100除得盡的也算潤年才要修正! 細心的同學會覺得奇怪,因為若是這樣,阿那不是應該要少掉13天才對? (公元 100 200 300 500 600 700 900 1000 1100 1300 1400 1500 1700 不該是潤年) 阿那怎會只少了11天呢? (try "cal 2 100" 以及 "cal 2 200" ...) 阿這個..這個就說來話長了 .. 因為公元前少算了兩次潤年! 如果你碰到 freedom 學長阿他會講一堆故事給你聽.. 可惜現在又沒看到他:-) 大概是這樣啦: 我們現行的曆法稱為格里曆(Gregorian calendar),就是俗稱的公曆或公元, 這是十六世紀的羅馬教皇Gregorian XIII (格里十三世)針對當時使用的儒略曆 (Julian calendar)進行修訂後,於1582年10月開始實行的。 (Julian 我本來把它翻為朱莉安, freedom 說不對..說那是形容詞, 要翻譯作儒略曆) 在1582年10月4日(含)之前所實行的曆法稱為儒略曆(Julian calendar), 從公元前46年(BC 45)羅馬統治者儒略•凱薩大帝(Julius Caesar)開始實施。 (Note that 公元前一年是 BC 0 ) 在公元4年3月1日以前的潤年是不規則的, 自公元4年後則規定所有4除得盡的年都是潤年, 也就是等於規定一年是365.25天,與真正的回歸年365.2422天相差0.0078天, 從公元前46年(BC 45)羅馬統治者儒略•凱薩大帝開始實施後到格里十三世的 一千多年裡,儒略曆累積的誤差已達10天(24節氣都亂掉了),為了消除這個差額, 格里十三世於是將儒略曆1582年10月4日的隔天訂為格里曆的1582年10月15日>, 把日期去掉十天,就可以讓春分日期又回復到3月21日左右,冬至回到12月22日左右。 所以應該是AD 1 到 AD 1582 年間多算了 12 天,BC 45 到 AD 1 之間少算了2天。 這麼說來應該是1582年的10月只有21天,那為什麼在 UNIX上用 cal 9 1752 會是1752年的九月憑空消失了11天呢? (但是 1582/10 仍是31天 !) 這當然又牽涉到統獨問題了.. 啥? 阿不是我們的統獨問題,是美國的 .. (其實應該是新舊教的問題) 更精確的說是因當時的英皇亨利八世與教宗Gregorian關係惡劣拒絕調整! 阿眾所週知,美國大都是英國人跑去新大陸阿後來獨立建國的,歷史太短, 只好懷念"祖國"囉,既然 UNIX 是美國人寫的阿所以 cal 就採用英國的 Gregorian calendar! 大不列顛(英國)是在 1752 年9月才改用 Gregorian calendar,當時誤差已 達11天,所以該月就憑空消失了11天! (see "man cal") 所以 1752/9/2 是星期三,隔天就是 1752/9/14 星期四。 據說當時英國大遊行的盛況比2002/9/28台灣大遊行還熱鬧, 因為租房子的人抗議多繳了11天的房租! 要求政府應該用免稅來補償! 嘿.嘿..嘿... 了了吧! CopyLeft tsaiwn@csie.nctu.edu.tw -- -------------------- 你要我別愛上你 卻又要我想你 難道童心未泯的你 又在玩四月一日的遊戲 愛情竟被你當兒戲 上帝也會生氣 我真的敗給了你 |
撰寫萬年曆習題注意: 因為電腦和 UNIX 是美國發明的, 所以電腦上不照羅馬皇帝的規定 因此, 請一律以電腦上UNIX用的為準, 不要管羅馬皇帝! 也就是說以 UNIX 上的 cal 為準 1752年9月2日以及以前: 只要除以 4 除得盡一律算閏年 (在大家 Java 講義中有夾一張說明) 西元一年一月一日是星期六 1752/9/14 是星期四 (其前面一天是 1752/9/2 星期三) 之後才照現在規則算閏年 所以1700年仍是閏年 |
http:// www.csie.nctu.edu.tw/~tsaiwn/acm/problemset/acm.fi.uva.es/p/v6/602.html What Day Is It? The calendar now in use evolved from the Romans. Julius Caesar codified a calendar system that came to be known as the Julian calendar. In this system, all months have 31 days, except for April, June, September, and November, which have 30 days, and February, which has 28 days in non-leap years, and 29 days in leap years. Also, in this system, leap years happened every four years. That is because the astronomers of ancient Rome computed the year to be 365.25 days long, so that after every four years, one needed to add an extra day to keep the calendar on track with the seasons. To do this, they added an extra day (February 29) to every year that was a multiple of four. Julian Rule: Every year that is a multiple of 4 is a leap year, i.e. has an extra day (February 29). In 1582, Pope Gregory's astronomers noticed that the year was not 365.25 days long, but closer to 365.2425. Therefore, the leap year rule would be revised to the following: Gregorian Rule: Every year that is a multiple of 4 is a leap year, unless it is a multiple of 100 that is not a multiple of 400. To compensate for how the seasons had shifted against the calendar up until that time, the calendar was actually shifted 10 days: the day following October 4, 1582 was declared to be October 15. England and its empire (including the United States) didn't switch to the Gregorian calendar system until 1752, when the day following September 2 was declared to be September 14. (The delay was caused by the poor relationship between Henry VIII and the Pope.) Write a program that converts dates in the United States using a calendar of the time and outputs weekdays. Input The input will be a series of positive integers greater than zero, three integers per line, which represent dates, one date per line. The format for a date is ``month day year" where month is a number between 1 (which indicates January) and 12 (which indicates December), day is a number between 1 and 31, and year is positive number. Output The output will be the input date and name of the weekday on which the given date falls in the format shown in the sample. An invalid date or nonexistent date for the calendar used in the United States at the time should generate an error message indicating a invalid date. The input will end with three zeroes. Sample Input 11 15 1997 1 1 2000 7 4 1998 2 11 1732 9 2 1752 9 14 1752 4 33 1997 0 0 0 Sample Output November 15, 1997 is a Saturday January 1, 2000 is a Saturday July 4, 1998 is a Saturday February 11, 1732 is a Friday September 2, 1752 is a Wednesday September 14, 1752 is a Thursday 4/33/1997 is an invalid date. --------------------------------------------------------------------- Miguel A. Revilla 1999-03-24 http:// www.csie.nctu.edu.tw/~tsaiwn/acm/problemset/acm.fi.uva.es/p/v6/602.html
Q:中華民國 1 年 1 月 1 日 = 西元何年何月何日? A: 1912/01/01 Q: 那請問該日的前一日是西元何年何月何日? A: 1911/12/18 Why? Why? Why? 因為清朝一直沒有調整公元的.. 直到被推翻後成立民國時才順便調整的!
The unix command "ncal -p" will print
the country codes and switching days from Julian to
Gregorian Calendar as they are assumed by ncal. The country code as
determined from the local environment is marked with an asterisk.
| |
bsd2% ncal -p AL Albania 1912-11-30 IT Italy 1582-10-04 AT Austria 1583-10-05 JP Japan 1918-12-18 AU Australia 1752-09-02 LI Lithuania 1918-02-01 BE Belgium 1582-12-14 LN Latin 9999-05-31 BG Bulgaria 1916-03-18 LU Luxembourg 1582-12-14 CA Canada 1752-09-02 LV Latvia 1918-02-01 CH Switzerland 1655-02-28 NL Netherlands 1582-12-14 CN China 1911-12-18 NO Norway 1700-02-18 CZ Czech Republic 1584-01-06 PL Poland 1582-10-04 DE Germany 1700-02-18 PT Portugal 1582-10-04 DK Denmark 1700-02-18 RO Romania 1919-03-31 ES Spain 1582-10-04 RU Russia 1918-01-31 FI Finland 1753-02-17 SI Slovenia 1919-03-04 FR France 1582-12-09 SW Sweden 1753-02-17 GB United Kingdom 1752-09-02 TR Turkey 1926-12-18 GR Greece 1924-03-09 *US United States 1752-09-02 HU Hungary 1587-10-21 YU Yugoslavia 1919-03-04 IS Iceland 1700-11-16
bsd2% ncal -s CN 12 1911 December 1911 Mo 5 12 Tu 6 13 We 7 14 Th 1 8 15 Fr 2 9 16 Sa 3 10 17 Su 4 11 18 bsd2% ncal -s CN 1 1912 January 1912 Mo 1 8 15 22 29 Tu 2 9 16 23 30 We 3 10 17 24 31 Th 4 11 18 25 Fr 5 12 19 26 Sa 6 13 20 27 Su 7 14 21 28 bsd2% man ncal |