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年仍是閏年 
bsd2% cal 2 1700
   February 1700
Su Mo Tu We Th Fr Sa 
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29
原來的閏年規則: 1.西曆4年(該年為閏年:被4整除且不被100整除), 因羅馬皇帝「奧古斯都帝」停閏,故該年2月只有28天,而非29天。 2.教皇「格勒哥里第十三」改曆,以西元1582年10月5日為15日,    中間略過10天,亦即西元1582年少了10/5-10/14這十天。 在格里曆(Gregorian calendar)下,400年中有97個閏年(每年366日)及 303個平年(每年365日),所以每年平均長365.2425日, 與公轉週期的365.2422日十分接近。 3.西元1582年以前的閏年計算規則:「被4整除者即為閏年」。 所以,西元100年、200年、300年...、1400年、1500年 也都是閏年。(注意公元4年例外,因羅馬皇帝「奧古斯都帝」停閏) 4.西元1582年以後的閏年計算規則,即現今大家耳熟能詳的 「被4整除且不被100整除,或被400整除者」。 例如,西元1700年、1800年、1900年皆不是閏年, 而西元16年、1984年、1996年皆為閏年。 UNIX上的 cal 指令 1752 年改曆, 不是 1582 年, why?  在UNIX上有一個很方便的西曆日期查詢工具--cal指令,在 其manual page內有一個注意事項,特別說明西曆1752年9月因為閏 年校正的關係,將西元1752年9月3日改為9月14日,使得該月份少了 11天。在UNIX上輸入下列指令「cal 9 1752」,可得到下列結果: September 1752 Sun Mon Tue Wed Thu Fri Sat 1 2 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 1582 二月,羅馬教廷要求從 1582 年十月減去十天,因此1582 年10月4日 後面緊跟著就是 15 日。在意大利,波蘭,葡萄牙和西班牙都這樣處理了。 其他天主教國家很快跟著這麼做了,但是新教國家不願意修改,而且希臘等 東正教國家直到本世紀初才修改。 這個改革在英國及其殖民地(包括美國)在 1752年9月執行了。 這樣 1752 年 9 月 2 日後面跟著 1752 年 9 月 14 日。 還有, Unix 上 cal 實作是把公元四年當作閏年, 請看:
bsd2% cal 2 4
     February 4
Su Mo Tu We Th Fr Sa 
                1  2
 3  4  5  6  7  8  9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29
-- 不要問我 我什麼都不知道
這是 ACM 比賽試題: 萬年曆檢驗器

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


中國(清朝)的 1911 年 12 月只有 18 天! 
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


You are the -th visitors to this page.