儒略日計算公式的解讀

對儒略日計算公式的解讀2016-03-08 23:39:32標籤:天文一、首先簡單介紹一下儒略日儒略日是法國學者Joseph Justus Scaliger(1540-1609)設計的一種曆法,與尤里烏斯·愷撒於公元前45年頒布的儒略曆沒有關係,不要混淆。儒略日是指從公元-4712年1月1日12時(公元前4713年1月1日12時)開始連續計算得出的天數(不滿一日的部分用小數表示)。二、儒略日的計算公式設Y為給定年份,M為月份,D為該月日期(可以帶小數)。(1)若M > 2,Y和M不變;若 M =1或2,以Y–1代Y,以M+12代M,換句話說,如果日期在1月或2月,則被看作是在前一年的13月或14月。(2)對格里高利曆有:A = INT(Y/100), B = 2 - A + INT(A/4);對儒略曆,取 B = 0(3)要求的儒略日即為:JD = INT( 365.25*(Y+4716) ) + INT( 30.6001*(M+1) ) + D + B - 1524.5注意:(1)公式中的INT( )是取整的意思,由於不同的計算機語言對負數取整所採用的操作不同,所以本公式使用了一些技巧,避免出現負數,INT( )只對正數取整;(2)本公式適用於計算-4712年1月1日12時以後的任何日期的儒略日,不使用於此之前的日期。三、對儒略日公式的解讀1、首先看第一部分:INT( 365.25*(Y+4716) )這部分明顯是用來計算年份對應的日數的。(1)這裡的第一個疑問是:為什麼年份要加4716,而不是4712,計算儒略日的起始時間明明是-4712年1月1日12時啊?答:根據公式的第一條,計算-4712年1月份和2月份的儒略日時,年份會變成-4713,如果加4712,會出現負數,對負數取整有歧義,不利於編程實現,應避免公式計算過程中出現負數,因此,不能加4712。(至於為什麼會有第一條規則,後面會詳細解釋)(2)這時會出現第二個疑問:那直接加4713不就行了,就不會出現負數了,為什麼要加4716?答:這裡加的數必須是四的倍數。為什麼呢?我們注意到,前面的被乘數是365.25,該數乘以1、2、3時,取整時,小數部分都會被舍掉;當乘以4時,0.25就會積累到一個整數,取整時就不會被舍掉。也就是每四年會多一天,即四年一閏。因此,年份的加數必須是四的倍數,這樣,就不會影響年份的平閏。例如-4709年是平年,乘積中的小數部分應該被舍掉,但是如果加數是4713,0.25*4變成整數了,就不會被舍掉,相當於天數多了一天。這樣就給公式的設計上帶來了很大的麻煩。因此加數必須是4的倍數,而且要大於4712,那麼里的最近的整數就是4716了,當然4720也行,只需要在後面多減365.25*4 = 1461天就行。這樣,這部分就解釋清楚了。由於這裡多算了四年的天數,所以公式最後要減去365.25*4 = 1461天。又由於儒略日是從中午12點開始計算的,所以還需要減去0.5天。這樣總共減了1461.5天,與公式後的1524.5天還差63天。至於這63天來自何處,後面會詳細解釋。2、B也是跟年份有關的天數,所以這一節先解釋一下B的含義。其實,B是為了調整格里高利曆和儒略曆的差別而引入的。(1)如果計算的日期在儒略曆的範圍內,即公元1582年10月5日之前,那麼B=0。因為儒略曆規定四年一閏,所以使用INT( 365.25*(Y+4716) )計算出的年份對應的日數是正確的,不需要調整。(2)如果計算的日期在格里高利曆的範圍內,即公元1582年10月4日之後,那麼就需要計算B了。因為格里高利曆規定四年一閏,但是遇世紀年(整百年份)時,必須被400整除才是閏年。使用INT( 365.25*(Y+4716) )計算出的天數沒有考慮這一點,所以需要在此基礎上,減去世紀年的個數(A),再加上世紀年中,能被400整除的個數(INT(A/4) )。(3)那麼B中加的2又是怎麼回事呢?這是因為,對於1582年,使用我們上面的演算法:-A +INT(A/4),得出需要減12天。但是格里高利曆其實只抹掉了10天(1582年10月4日下一日直接跳到10月15日),相當於我們的方法多減了2天,所以要把這2天再加上。這樣,B也解釋清楚了。3、INT( 30.6001*(M+1) )這一部分是計算月份對應的天數的。那麼30.6是怎麼得到的?M為什麼要加1?M=1和2時,為什麼要將M變為M+12,同時將Y設為Y-1?最後減的那63天又是哪裡來的?其實這幾個疑問是相互關聯的,這一塊我想了好久都沒想明白,直到看到一個論壇的討論後,才豁然開朗。下面是解釋。一些聰明的人發現了下面的事實:

?月份對應天數的計算規律即先把 1月及2月調到上一年 12個月後面,作 13 及 14 月計算,然後把月數加2再乘30.6,取整數後減63,便得原月份完結時的總日數。這就解釋了30.6、63這些數字的來歷,以及為什麼M=1和2時,要做那些改變。在計算儒略日時,由於M月還沒有完結,所以用M+1計算上一個月完結時的總日數,本月所過的天數就是D了。好了,到這裡就將儒略日計算公式中各部分的含義都解釋清楚了。不得不佩服設計者的心思,尤其是最後月份的計算,真是炸裂,太佩服了。在尋找答案的過程中,發現很多文章都是只知其然不知其所以然,然而最後在一些論壇中看到有很多人像我一樣喜歡刨根問底,讓我感覺自己也不算是另類。我的答案主要參考了術數縱橫論壇中kskfk的回答,以及牧夫論壇中」浪淘沙「的回答,在這裡貼出鏈接。http://www.fengshui-chinese.com/discuz/viewthread.php?tid=36164自古人們用年月日來計時,地球月亮太陽,一個公轉周期、一個自轉周期、一個月相周期不太好協調。日,最準確,年有誤差,月就太亂了(是序列號亂,不尊重嫦娥姐)。以前新年我就用excel拉一拉1年的積日(給一年的日子分發自然序列),但我一直想有個很古老久遠的起始日。這次看百科,才知道天文學家們早就發明了儒略日。http://baike.so.com/doc/6432578-6646255.html比如今天公元2017/2/2,我喜歡這樣標記2017-33(2017年第33日),和有些人喜歡用的2017-5(2017年第5周)差不多。下圖是電腦內存條信息查詢,老外製造商就習慣用這種計時方法。

天文和人文我都喜歡,所以我最喜歡這樣計時,看下面的表格:

表中有個生命第N日,我本來用的是自己生日計算,因為要貼出來就用了公眾人物。偶認為高曉松老師在大眾社科知識傳播上做出了不朽的貢獻,所以就用其生日舉例。從百科上得到生日為1969/11/14-即高曉松生命第1日,到2017/2/2為第17247日(已過了17246日)。公元2017年2月2日,可寫為高曉松17247日,和年號紀年類似。你可以算算你自己的,算出來不管多少,感覺想必是五味雜陳,時不我待。表中EXCEL第N日,如果是PC版本的,第1日為1900/1/1,輸入日期,然後將單元格格式改為數值,就得到這個數字。下面這個表,就是積年法紀年。

公元2017年,也可以這樣表述:黃帝4714年天朝69年國富論242年(國富論發表於1776年)美利堅242年(純屬巧合)集思錄6年(哈哈)儒略6730年注意,這個儒略紀年是我自編的,沒這回事,你可以搜搜儒略年的定義。把儒略起始日的那1年,設為儒略紀年第1年,就得到這個儒略紀年,意思是已過去了6729年。傳統上,中國人說年齡說虛歲,那麼網名+虛歲,就相當於年號紀年法。假設今年天書108歲,割總98歲,帥牛18歲,那麼公元2017年,就可以在個人日記里寫為:天書108年割總98年帥牛18年附件里有excel表格,你可將裡面的積日改成你自己的。明日立春

漢宮春·立春日辛棄疾春已歸來,看美人頭上,裊裊春幡。無端風雨,未肯收盡余寒。年時燕子,料今宵夢到西園。渾未辦,黃柑薦酒,更傳青韭堆盤?卻笑東風,從此便薰梅染柳,更沒些閑。閑時又來鏡里,轉變朱顏。清愁不斷,問何人會解連環?生怕見花開花落,朝來塞雁先還。儒略日的計算(2013-03-01 21:22:07)儒略日(Julian day)是指由公元前4713年1月1日,協調世界時中午12時開始所經過的天數,多為天文學家採用,用以作為天文學的單一曆法,把不同曆法的年表統一起來。 儒略日是一種不用年月的長期紀日法,簡寫為JD。是由法國紀年學家史迦利日(Joseph Justus Scliger 1540年-1609年)在1583年所創,這名稱是為了紀念他的父親——義大利學者Julius Caesar Scaliger(1484年-1558年)。以儒略日計日是為方便計算年代相隔久遠或不同曆法的兩事件所間隔的日數。由公曆年月日化為儒略日公式:J=day-32075+[(1461(year+4800+[(month-14)/12]/4]+367[(month-2-[(m-14)/12])/12]-[(3[(y+4900+[(m-14)/12])/100]/4)]某日某一時刻對應的儒略日為:JD = J-0.5+hour/24+minute/1440+second/86400如用到毫秒、微秒與納秒均轉至秒再進行計算。
推薦閱讀:

混音必須要掌握的公式
Excel中最值得收藏的12個函數公式(精選)
如 π 與 e 這樣的數學常數應該斜體嗎?
Excel公式與函數之美07:公式中的王者——數組公式
短線是銀公式集

TAG:公式 | 計算 | 解讀 |