轉自
http://fmddlmyy.home4u.china.com/text8.html
時標和歷法
1、時標
時標(Time Scale)就是標度時間的方法。在時間的標度上,存在著兩個相互獨立的需求:一方面,我們希望時間標度能與地球的自轉相吻合,可以稱作天文學需求;另一方面,我們要求時間標度的單位是精確的,便于大家獲得準確的時間。由于地球自轉的不均勻性,從這兩個需求出發制定的時標會有細微的差異。
世界時(UT1)是基于地球自轉的時標,下文會詳細介紹。國際原子時(TAI)是基于單位時間的時標,它以“銫-133原子基態兩個超精細能級間躍遷輻射 9,192,631,770周所持續的時間”為一秒,可以稱作原子時標。原子時標的準確度為每日數納秒,而世界時的準確度只有數毫秒。
1.1 本初子午線
對于基于天文觀測的時標,地球上位于不同經度的觀測者,在同一瞬間測得的結果是不同的。因此需要統一的地理經度基準。
1884年在華盛頓舉行的國際子午線會議決定,采用英國倫敦格林威治(Greenwich)天文臺埃里中星儀所在的子午線作為時間和經度計量的標準參考子午線,稱為本初子午線,又稱格林威治子午線。格林威治天文臺于1948年遷到蘇塞克斯郡(Sussex)的Herstmonceux Castle,但舊址繼續被用作0度經線的位置。
1957年國際上以若干天文測時結果長期穩定性較好的天文臺數據為參考,求得平均天文臺經度原點。1968年國際上把通過地極原點和平均天文臺經度原點的子午線稱為本初子午線。可見,本初子午線的定義已經不依賴于格林威治天文臺舊址。
1.2 世界時
世界時的制定基準是太陽的周日視運動。視運動就是我們看到的運動。本來是地球繞著地軸由西向東轉動。但如果觀測者以為自己不動,就可以認為太陽在由東向西轉動,這就是太陽的周日視運動。
地球在自轉的同時還圍繞太陽公轉,因為地球公轉軌道是橢圓的,所以太陽的周日視運動是不均勻的。天文學家制定了以太陽周日視運動的平均速度為基礎的平太陽時,平太陽時的基本單位是平太陽日。國際天文學聯合會于1928年決定,將由格林威治平子夜起算的平太陽時稱為世界時,簡稱UT。
UT0是天文臺觀測到的原始數據。UT1在UT0的基礎上,消除了地軸擺動的影響。還有一個修正了地球自轉速度季節性變動的UT2,現在已經不用了。其實UT0、UT1、UT2的差異很小,不超過0.03秒。現在提到的世界時一般指UT1。
1.3 時區
世界時區的劃分,是以本初子午線為標準,從西經7度5分到東經7度5分為零時區;從零時區的邊界分別向東和向西,每隔經度15度劃一個時區。東、西各劃出 12個時區,東十二時區與西十二時區相重合。全球共劃分成24個時區。各時區都以中央經線的地方時為本區的區時,相鄰兩時區的區時相差一小時。
在太平洋中靠近180°經線附近有一條國際規定的國際日期變更線(簡稱日界線)。此線兩側的日期不同。由東向西過日界線,日期要增加一天(即略去一天不算);由西向東過日界線,日期要減少一天(即日期重復一次)。
1.4 協調世界時(UTC)和閏秒
為了調和天文學需求和單位時間需求的差異,一種稱為協調世界時(UTC)的折衷時標于1972年面世。UTC的秒長與國際原子時(TAI)相同。但在必要時,UTC會增加1秒或去掉1秒,使UTC和世界時(UT1)的時刻之差保持在±0.9秒以內。這一技術措施被稱為閏秒(Leap Second)。
因此,UTC與TAI之間會出現若干整數秒的差別。位于巴黎的國際地球自轉事務中央局(IERS)負責決定何時加入閏秒。TAI是從1958年1月1日0 時0分0秒開始計時的。在本文寫作時(2005年7月),UTC時間比TAI時間小32秒。最近一次閏秒調整是1999年1月1日。下次閏秒調整是 2006年1月1日。
我們提到的地區標準時就是在UTC上加上時差得到的本地時間。
1.5 格林威治時間(GMT)
格林威治時間(GMT)是一個比較模糊的概念。在1928年,GMT就是世界時。在UTC被廣泛采用后,我們提到的GMT實際上是UTC時間,或者說零時區的標準時。
1.6 GPS時間
GPS時間可以看作沒有閏秒調整的UTC時間,并以1980年1月6日0時0分0秒為起點。目前GPS時間比UTC時間大13秒。
協調世界時(UTC)將在2005年底實施一個正閏秒。屆時,所有的時鐘將撥慢1秒。GPS時間不做閏秒調整,所以將比UTC時間大14秒。從GPS時間計算本地時間,需要減去目前累計的閏秒,再加上本地的時差。
1.7 小結
在所有時標中,日和秒的關系都是固定的,每日86400秒。確定了秒的長度,就確定了日的長度,反之亦然。原子時標以秒為基準,秒和日的長度都是固定的。世界時以日為基本單位,每日的長度會有毫秒級的差異。UTC既保證了單位時間的精確,又通過閏秒調整與天文觀測的時間保持不大于±0.9秒的誤差。我們日常生活中使用的時間都以UTC時間為標準。
時標作為時間的刻度,為時間長河建立了一根以秒或日為單位的坐標軸。雖然,“GPS時間280948秒”可以標志一個唯一的時刻,但用于日常生活未免不太方便。在日常生活中,我們需要更方便的標記時間的方法,這就是下面要談到的歷法。
2、歷法
所謂歷法,就是通過合理地安排年、月、日這三個基本量的關系,為時間建立標記的方法。
2.1 回歸年和朔望月
前面說過:地球自轉可以看作太陽的周日視運動。同理,地球繞太陽的公轉,可以被看作太陽的周年視運動。周年視運動的軌道被稱作黃道,黃道面和赤道面的夾角是23°27′。隨著太陽在黃道上的位置不同,地球上的季節也由春到夏,以至秋冬。
黃道和赤道的兩個交點分別被稱作春分點和秋分點,這兩點在黃道上的兩個中點分別被稱作夏至點和冬至點。太陽從春分點出發,繞黃道一周,又回到春分點所花的時間被稱為回歸年。目前測量的回歸年長度是365.242189日。
月亮的盈虧變化,產生了月。月亮繞地球旋轉,當轉到正對著太陽的位置,我們就會觀測到滿月,這就是望;當轉到背對太陽的位置,我們會完全看不到,這就是朔。月亮從朔到朔,或從望到望所花的時間被稱作朔望月。目前測量的朔望月長度是29.530588853000001日。
2.2 歷法的分類
僅以太陽運動為依據的歷法被稱作陽歷或太陽歷。例如我們現在使用的公歷。陽歷以回歸年為基本周期,與月亮運動沒有任何關系。
僅以月亮運動為依據的歷法被稱作陰歷或太陰歷。例如伊斯蘭教國家和地區使用的回歷。陰歷以朔望月為基本周期,與太陽運動沒有任何關系。
同時考慮太陽和月亮運動的歷法被稱作陰陽歷,例如我國的農歷。在我國,農歷習慣上也被稱作陰歷。陰陽歷把回歸年和朔望月并列為制歷的基本周期。
由于回歸年、朔望月的長度都不是日的整數倍,所以各種歷法都要通過增加閏日或閏月,來調整自己與基本周期的差異。下面介紹幾種常用的歷法。
2.3 儒略歷
公元前46年,羅馬執政官儒略·凱撒頒布了儒略歷。儒略歷每年12個月,平年365天,閏年366天。除2月外,單數月份31天,偶數月份30天。2月份平年29天,閏年30天。每隔3年置一閏年。
儒略歷是純太陽歷,每年的平均長度是365.25天。每400年,儒略歷與回歸年大約相差3天,即:
(365.25-365.242189)*400 = 3.1244
凱撒為了紀念改歷成功,將他出生的7月從Quintilis改成自己的名字Julius。
2.4 奧古斯都歷
奧古斯都是“神圣”的意思,這是當時人們對羅馬統治者屋大維的尊稱。
從公元前42年到公元前9年,儒略歷被錯誤地執行為“每3年置一閏年”。儒略·凱撒的侄子屋大維糾正了這個錯誤,同時將自己出生的8月從Sextilis 改成自己的稱號Augustus,將8月改成31天,將9、10、11、12月的大小月對換,并從2月份扣去一天,成為平年28天,閏年29天。
奧古斯都歷的月份設置和現在的公歷已經完全相同了。
2.5 格里高利歷——公歷
公元1582年3月1日,羅馬教皇格里高利十三世頒布了格里高利歷,將不能被4整除的世紀年算作平年,這就是我們現在使用的公歷。
在公歷中,每400年有97個閏年,平均每年的長度是:
(365*400+97)/400 = 365.2425 天
每400年,公歷與回歸年大約相差0.1244天,即:
(365.2425-365.242189)*400 = 0.1244
2.6 儒略日和簡化儒略日
在天文學有一種連續紀日的儒略日(JD),它以儒略歷公元前4713年1月1日的GMT正午為第0日的開始。還有一種簡化儒略日(MJD):
MJD=JD-2400000.5
MJD的第0日是從公歷1858年11月17日的GMT零時開始的。我寫完前一個句號時的MJD是53583.22260。小數部分是以UTC時間在當天逝去的秒數除以86400得到的。0.22260約為UTC時間的5:20,加上中國的時區就是13:20。
需要注意:儒略歷公元前4713年1月1日相當于公歷公元前4713年11月24日。在香港天文臺的網頁上,將儒略歷說成以“公元前4713年1月1日格林尼治平時正午”起算,是錯誤的。
2.7 農歷
2.7.1 月的劃分
農歷的月是嚴格按照朔的時刻確定的,朔所在日是初一。由于朔望月的長度約為29.A日(將小數部分記作A),假設朔發生在(30-29.A)日以內的時刻,兩個朔之間就只有29天,該月就是小月;否則兩個朔之間有30天,該月就是大月。
2.7.2 設計
我們已經根據月亮的運動規律將時間長軸劃分為一個個月,下面要做的就是確定將哪些月組合成年。設計要求是:該設計應使四季在每年的位置相對穩定。
設計思路是這樣的:四季變化以回歸年為周期,回歸年的長度約為365.242189日。12個朔望月的長度約為354.367066236日,13個朔望月的長度約為383.897655089。如果我們讓有的年份有12個朔望月,有的年份有13個朔望月,并按照一定周期循環;在一個周期內,年的平均長度接近回歸年的長度,就能實現我們的設計目標。例如:我們在19年中,讓7年有13個月,其它年為12個月,則在19年的周期里,每年的平均長度是:
(29.530588853000001*(12*19+7))/19 ≈ 365.246756866 天
這個結果與回歸年的長度已經比較接近。包含12個朔望月的年份被稱作平年,包含13個朔望月的年份被稱作閏年,閏年多加的一個月被稱作閏月,這就是《尚書·堯典》中所說的“以閏月定四時成歲”。
那么,閏月加在哪里呢?在介紹置閏的規則前,必須先介紹一下節氣。
2.7.3 二十四節氣
以春分點為黃經0度,將黃道分成二十四等分,每等分占黃經15度,太陽通過等分點的時刻就是對應節氣的時刻。二十四節氣只與太陽的運動有關,所以它們在公歷中的日期變化不大。
二十四節氣從立春(黃經30度)開始,依次為立春、雨水、驚蟄、春分、清明、谷雨、立夏、小滿、芒種、夏至、小暑、大暑、立秋、處暑、白露、秋分、寒露、霜降、立冬、小雪、大雪、冬至、小寒、大寒。
將立春作為第1個節氣,依次編號。偶數編號的節氣被稱為“中氣”(major solar terms),奇數編號的節氣仍稱作“節氣”(minor solar terms)。我們在日常生活中將節氣和中氣統稱為節氣(solar terms)。中氣是置閏的重要依據。
2.7.4 置閏
在農歷中,從前一年正月初一到下一年正月初一被稱作年。顯然,必須先確定了閏月,才能確定年的范圍,我們不可能在置閏規則中用到“年”。實際上,我們用到了另一個概念:歲。從前一個冬至到下一個冬至被稱作歲。“歲”的長度就是回歸年的長度。
冬至所在的月被定義為11月。如果在兩個11月間有12個完整的月,那么這兩個11月間的歲就被稱作閏歲。因為這兩個11月間只有11個中氣,所以閏歲的12個月中至少有一個月沒有中氣。
閏歲的第一個不含中氣的月,就是閏月。至此,我們已經描述了編制農歷的完整規則。
2.7.5 閏年和Y2033問題
包含閏月的年被稱作閏年。如果閏月出現在11月,就可能出現前一年是閏年,但不是閏歲;后一年是閏歲,但不是閏年。一個典型的例子就是Y2033問題。
從2033年的第1個月算起,第8個月沒有中氣,第11個月有兩個中氣,第12個月沒有中氣,第13個月有兩個中氣,第14個月沒有中氣。在2032年的 11月和2033年11月間只有11個完整的月,不是閏歲。在2033年的11月和2034年11月間有12個完整的月,是閏歲。
按照置閏規則,第12個月被作為閏月,即閏11月。8月沒有中氣,又不是閏月,被稱作偽閏月(Fake leap month)。2034年是閏歲,但不是閏年。2034歲的閏月已經在2033年加過了。
國內1990年以前的萬年歷都將2033年設為閏7月,這個錯誤被稱作Y2033問題。以后出版的萬年歷都改成了閏11月。但網上的一些萬年歷程序現在還在使用錯誤的農歷數據。
2.7 回歷
作為太陰歷的例子,簡單介紹一下回歷。回歷是伊斯蘭教國家和地區采用的歷法。它以朔望月為基本周期,每年12個月。平年奇數月30天,偶數月29天,共354天。
每30年為一周,加11個閏日。在30年循環周期中,第2、5、7、10、13、16、18、21、24、26、29年為閏年。閏年在12月底增加一天,共355天。
在回歷中,月的平均長度是:
(354*30+11)/30/12 ≈ 29.53 天
這和朔望月長度非常接近,很好地符合了月亮的運動規律。年的平均長度是:
(354*30+11)/30 ≈ 354.366667 天
這和回歸年約差11天。因此回歷的新年在公歷中會逐年提早,循環周期為
365.242189/(365.242189-354.366667) ≈ 33.5838766176 年
回歷的起始歷元被稱作伊斯蘭教紀元,定在穆罕默德從麥加遷到麥地那的一天,即儒略歷公元622年7月16日,在公歷中是公元622年7月19日。例如:伊斯蘭教紀元1426年1月1日是公元2005年2月10日。伊斯蘭教紀元1427年1月1日是公元2006年1月31日。
2.8 小結
公歷和回歷的計算都很簡單。但公歷的月不能符合月亮的運動規律。回歷的年不能符合太陽的運動規律。農歷較好地符合了太陽和月亮的運動規律,但計算比較復雜。
在網上可以找到計算各國歷法的程序。我曾經將其中一個Java程序庫的農歷部分改寫成C/C++程序,以提高運算速度。在我的個人主頁上有關于農歷計算程序的進一步討論(
http://fmddlmyy.home4u.china.com/cal.html)。不過這些內容已經超出了本文的范圍。
在寫這篇文章前,我不知道“時標”,對歷法的概念也很模糊。通過查資料、寫作,我對相關概念的了解越來越清晰。這篇文章的寫作目的是將時標、歷法的一些基本概念簡單、清晰地描述出來,希望有更多的讀者像我一樣從中受益。
posted on 2005-08-29 11:42
Pudgy's World 閱讀(1046)
評論(0) 編輯 收藏 所屬分類:
Java Newbie