c# Julian day 儒略日計算公式

來源:互聯網
上載者:User

天文學有一種連續紀日的儒略日(JD),它以儒略曆公元前4713年1月1日的GMT正午為第0日的開始。還有一種簡化儒略日(MJD): MJD=JD-2400000.5 MJD的第0日是從西曆1858年11月17日的GMT零時開始的。

需要注意:儒略曆公元前4713年1月1日相當於西曆公元前4713年11月24日。 儒略日(Julian day)是指由公元前4713年1月1日,國際標準時間中午12時開始所經過的天數,多為天文學家採用,用以作為天文學的單一曆法,把不同曆法的年表統一起來。 儒略日是一種不用年月的長期紀日法,簡寫為JD。是由法國學者Joseph Justus Scliger(1540-1609)在1583年所創,這名稱是為了紀念他的父親——意大利學者Julius Caesar Scaliger(1484-1558)。

儒略日的起點訂在公元前4713年(天文學上記為 -4712 年)1月1日格林威治時間平午(世界時12:00),即JD 0 指定為 4713 B.C. 1月1日12:00 UT到4713 B.C. 1月2日12:00 UT的24小時。每一天賦予了一個唯一的數字,順數而下,如:1996年1月1日12:00:00的儒略日是2450084。這個日期是考慮了太陽、月亮的運行周期,以及當時收稅的間隔而訂出來的。Joseph Scliger定義儒略周期為7980年,是因28、19、15的最小公倍數為28×19×15=7980。其中: 28年為一太陽周期(solar cycle),經過一太陽周期,則星期的日序與月的日序會重複。 19年為一太陰周期,或稱默冬章(Metonic cycle),因235朔望月=19迴歸年,經過一太陰周期則陰曆月年的日序重複。 15年為一小紀(indiction cycle),此為羅馬皇帝君士坦丁(Constantine)所頒,每15年評定財產價值以供課稅,成為古羅馬用的一個紀元單位, 故以7980年為一儒略周期,而所選的起點公元前4713年,則是這三個重複持續時間同時開始的最近年份。 以儒略日計日是為方便計算年代相隔久遠或不同曆法的兩事件所間隔的日數。 由於儒略日數字位元太多,國際天文學聯合會於1973年採用簡化儒略日(MJD),其定義為 MJD = JD - 2400000.5。MJD相應的起點是1858年11月17日世界時0時。

儒略日的計算 儒略日= K - 32075 + 1461 * (I + 4800 + (J-14)/12)/4+367*(J-2-(J-14)/12*12)/12-3*((I+4900+(J-14)/12)/100)/4

現把此計算公式整理如下。

比如:2009/1/1轉換為 Julian day 應為 2454833 (共7碼)

Code
/// <summary>
    /// 產生日期的Julian day
    /// </summary>
    /// <param name="year">年</param>
    /// <param name="month">月</param>
    /// <param name="day">日</param>
    /// <returns>Julian day</returns>
    private long julian ( int year, int month, int day )
    {
        long jy = year, jm = month, jd = day;
        if (jy < 0)
        {
            jy = jy + 1;
        }
        if (month > 2)
        {
            jm = jm + 1;
        }
        else
        {
            jm = jm + 13;
            jy = jy - 1;
        }
        long jul = Convert.ToInt64 (Math.Floor (365.25 * jy) + Math.Floor (30.6001 * jm) + jd + 1720995.0);
        if (jy < 1582 && jm < 10 && jd < 15)
        {
            return jul;
        }
        else
        {
            long ja = Convert.ToInt64 (0.01 * jy);
            jul = Convert.ToInt64 (jul + 2 - ja + 0.25 * ja);
            return jul;
        }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.