學習、詢問、尋找答案,向各方術數同好交流
與世界術數連接

術數社交學習平台討論區步天推晷儒略日數的計算

  • 儒略日數的計算

    Posted by 小小兔 on 27 3 月, 2006 在 7:29 上午

    儒略日起始時間為4713 BC,西元後的年數(AD/CE)可以簡單地加上4713成為儒略年數(Julian Period)。例如2003 AD年會得出6716。西元前(BC/BCE)要表示成負數的西元後的年數。因為西元前1年(1BC)等於0AD,因此要將BC/BCE的年數減1然後取負值。例如868BC年會得出 –867AD。但是如果4713 BC不是第一年而是設為0年,計算時會簡化,對於BC/BCE的年只須加4712而不是4713。例如2003AD年會得出6715。這種計法稱為Scalinger Year。另外在計算儒略日數時年是以3月1日開始,一月及二月被當作上一年的第13及14個月。

    首先將年份(Scalinger Year)徐4。例如2003年2月15日的Scalinger Year是2002 (一月及二月被當作上一年的第13及14個月) + 4712 = 6714,6714/4 = 1678餘2,意思是4年循環的儒略曆有1678個而本循環(0-3)中等於2。暫時不理閏年所加的日數,儒略曆日數= 1461 x 1678 + 2 x 365 = 2,452,288。

    世紀 修正

    1582 -10
    1600 -10

    1700 -11

    1800 -12

    1900 -13
    2000 -13

    將以上兩項修正加在總數成為儒略日數(Julian Day Numbers) 。所以2003年2月15日=2,452,640 + 59 – 13 = 2,452,686 JD。最後儒略日從中午12時開始,對應民用計算日期由凌晨開始多了半日所以再減0.5成為JD 2,452,685.5。

    由儒略日數(Julian Day Numbers)轉換成格勒哥里曆(Gregorian calendar)

    轉換儒略日數(Julian Day Numbers) 成格勒哥里曆(Gregorian calendar)只是倒轉求儒略日數過程。例如將JD 2,452,686轉成格勒哥里曆。

    首先將2,452,686減去4713 BC1月至2月的59日成為2,452,627。將這個數徐以1461得1678餘數是1069,再將餘數1069數徐以365得2餘數339。1678 x 4 = 6712加上這個商2=6714就是Scalinger Year,將Scalinger Year 減去4712 =2002年。餘數339對應以3月為首的累積日數表中的已二月,所以年份要加一成為2003年。餘數339減去格勒哥里曆修正日數339 – (–13) = 352,將352減去二月的累積日數337 =15,這就是日。結果是2003年2月15日。

    talang replied 18 年, 1 月 前 5 Members · 9 Replies
  • 9 Replies
  • 小小兔

    會員
    27 3 月, 2006 在 7:30 上午

    由儒略日數轉換成格勒哥里曆

    轉換儒略日數(Julian Day Numbers) 成格勒哥里曆(Gregorian calendar)只是倒轉求儒略日數過程。例如將JD 2,452,686轉成格勒哥里曆。

    首先將2,452,686減去4713 BC1月至2月的59日成為2,452,627。將這個數徐以1461得1678餘數是1069,再將餘數1069數徐以365得2餘數339。1678 x 4 = 6712加上這個商2=6714就是Scalinger Year,將Scalinger Year 減去4712 =2002年。餘數339對應以3月為首的累積日數表中的已二月,所以年份要加一成為2003年。餘數339減去格勒哥里曆修正日數339 – (–13) = 352,將352減去二月的累積日數337 =15,這就是日。結果是2003年2月15日。

  • 小小兔

    會員
    27 3 月, 2006 在 7:31 上午

    簡化儒略日數

    從過去的150年到現在,儒略日的數值起碼是7位數字。1957年Smithsonian Astrophysical Observatory將儒略日數值減去2,400,000.5並命名為簡化儒略日數 (Modified Julian Day Number),簡稱MJD。簡化JD有兩個目的:

    1) 日期由午夜而不是中午開始。

    2) 儒略日的數值由7位數字減為5位數字,節省電腦儲存空間。

    3)JD 2,400,000是1858年11月16日。MJD 2 = 0相當於1858年11月17日的凌晨。

  • 小小兔

    會員
    27 3 月, 2006 在 7:32 上午

    由儒略日計算星期

    將格勒哥里曆日期轉成儒略曆日數(Julian Day Number),再由以下公式求出星期。

    W = (JD = 1.5) Mod 7

    餘數W = 0代表星期日,1代表星期一,2代表星期二,????如此類推。

  • annifer123

    會員
    7 4 月, 2006 在 3:32 上午

    求出给定年(I),月(J),日(K)的儒略日:
    儒略日= 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
    请问:这些数字是代表什么意思啊。谢谢

    其中包括
    32075
    1461
    4800
    4900
    367
    中文简体字好一些:原因:现在的年轻人大多看不懂繁体字。不利于传播文化知识。

  • kskfk

    會員
    27 4 月, 2006 在 9:28 上午

    [font=Courier New]小小兔說:
    儒略日起始時間為4713 BC
    儒略日從中午12時開始,對應民用計算日期由凌晨開始多了半日所以再減0.5

    小小兔在 https://forum.shusquare.com/forum.php?mod=viewthread&tid=36165&extra=page%3D1 說:
    格勒哥里十三世接受建議。執行以下改革並稱為格勒哥里曆。
    1.將1582年10月5日至1582年10月14日這10日取消。
    2.每個可被 4 整除的年份是一個閏年。
    3.但00結尾的年份一定要被 400 整除,才能算是閏年。否則不是閏年。
    因此,1700,1800,1900,2100 和 2200 年都不是閏年。而1600,2000,和 2400年是閏年。
    =========================================

    其實,1582 年 10 月 14 日或以後的儒略日可以以下公式計算:

    給定年(I),月(J),日(D)

    先作年月份調整(調整原因見下面):
    若 J < 3 則 Y = I - 1 及 M = J + 12 否則 Y = I 及 M = J JD = int (365.25 * (Y + 4712)) + int (30.6 * (M + 1)) - 63 - int (Y / 100) + int (int (Y / 100) / 4) + 2 + D - 0.5 其中: 第一行(年份日數計算): 365.25 = 儒略曆一年平均日數,每 4 年潤 1 日,不足 4 年不潤。 +4712 = 4713 - 1 4713 = 包含公元前 4713 年起的年份。 計算 JD 時,年份 Y 還沒有完結,例如計算 Y = 2006 時,由公元 1 年起計,只有 2005 年已經完結,所以需要減 1。將 -1 與 4713 結合,得 +4712。 第二行(月份日數計算): 30.6 及 +1 及 -63 在後面談 第三行(格勒哥里改曆及置潤日數調整): - int (Y / 100) = 取世紀數 = 每世紀減 1 日 + int (int (Y / 100) / 4) = 取每四世紀數 = 每四世紀加 1 日 因 1582 年改曆,先減世紀數 15,再加回 int (15/4) = 3 日,等如減了 12 日,所以需再加 2 日,便減了 10 日,等於格勒哥里曆改革時取消的日數。 以後每世紀減 1 日,每四世紀加回 1 日,便合格勒哥里曆。 第四行(日數調整): -0.5 = 調整儒略日從中午12時開始的規定。 月份日數計算: 數學界發現下面事實: 月 日數 總日數 月數+2 x30.6 取整數 減總日數 1 31   31 2 28   59 3 31   90    5  153.0 153 63 4 30  120    6  183.6 183 63 5 31  151    7  214.2 214 63 6 30  181    8  244.8 224 63 7 31  212    9  275.4 275 63 8 31  243   10  306.0 306 63 9 30  273   11  336.6 336 63 10 31  304   12  367.2 367 63 11 30  334   13  397.8 397 63 12 31  365   14  428.4 428 63 +1 31  396   15  459.0 459 63 +2 28  424   16  489.6 489 63 即先把 1 及 2 月調到上一年 12 個月後面,作 13 及 14 月計算, 然後把月數加 2 再乘 30.6,取整數後減 63,便得原月份完結時的總日數。 但計算 JD 時,月份 J 還沒有完結,例如計算 J = 7 時,只有 6 個月已經完結, 所以用 7+1 = 8 作調整後的月數 = 6+2。 故 1 月 1 日至 7 月 12 日的總日數 = int (30.6 * (7 + 1)) - 63 + 12 = 193 2006 年 4 月 27 日儒略日為: JD = int (365.25 * (2006 + 4712)) + int (30.6 * (4 + 1)) - 63 - int (2006 / 100) + int (int (2006 / 100) / 4) + 2 + 27 - 0.5 = 2453852.5 [/font]

  • kskfk

    會員
    27 4 月, 2006 在 9:39 上午

    隨著一聲新年到,『富神爺爺』看顧您了,
    你獲得了『富神爺爺』贈送現金427個美元。

    [font=Courier New]至於 annifer123 說:
    求出給定年(I),月(J),日(K)的儒略日:
    儒略日 = 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

    請問:這些數字是代表什麼意思啊。謝謝

    其中包括
    32075
    1461
    4800
    4900
    367
    ================================================

    其實公式應為:
    JD = K – 32075 + int (365.25 * (I + 4800 + int ((J-14) / 12)))
       + int (30.5833333 * (J – 2 – int ((J-14) / 12) * 12))
       - int (0.75 * (int ((I + 4900 + int ((J-14) / 12)) / 100)))
       - 0.5

    簡化後:
    JD = K – (365.25 * 88 – 67) + int (365.25 * (I + (4712 + 88) + int ((J-14) / 12)))
       + int (30.5833333 * (J – 2 – int ((J-14) / 12) * 12))
       - int (0.75 * (49 + int ((I + int ((J-14) / 12)) / 100)))
       - 0.5

    可知:
    32075 = 365.25 * 88 – 67;有關 67 一數的處理見下面討論
    1461 = 365.25 * 4
    4800 = 4712 + 88
    4900 = 由很多數組成,見下面討論
    367 = int (30.6 * 12);而 30.5833333 實約等於 30.6

    再簡化後:
    JD = K + 67 + int (365.25 * (I + 4712 + int ((J-14) / 12)))
       + int (30.5833333 * (J – 2 – int ((J-14) / 12) * 12))
       - int (36.75 + 0.75 * int ((I + int ((J-14) / 12)) / 100))
       - 0.5

    可知:
    +int ((J-14) / 12) 為年中月份數作年份位值調整,當 J < 3 時,調整值為 -1,否則為 0。 所以 I + int ((J-14) / 12) = Y -int (J-14) / 12) * 12 為年中月份數在年份位值調整後撥回月份位值調整, 當 J < 3 時,調整值為 +12,否則為 0。 所以 J - int (J-14) / 12) * 12 = M Y 與 M 的定義年上文。 再簡化後: JD = K + 67 + int (365.25 * (4712 + Y))    + int (30.5833333 * (M - 2))    - int (36.75 + 0.75 * int (Y / 100))    - 0.5 月 日數 總日數 月數-1 x30.583333333 取整數 以總日數減之 1  31   31 2  28   59    1   30.58333333   30    29 3  31   90    2   61.16666667   61    29 4  30  120    3   91.75      91    29 5  31  151    4  122.33333333  122    29 6  30  181    5  152.91666667  152    29 7  31  212    6  183.5      183    29 8  31  243    7  214.08333333  214    29 9  30  273    8  244.66666667  244    29 10  31  304    9  275.25     275    29 11  30  334   10  305.83333333  305    29 12  31  365   11  336.41666667  336    29 +1  31  396   12  367.0      367    29 即月數減 1 再乘 30.583333333,取整數後加 29,便得原月份完結時的總日數。 但計算 JD 時,月份 J 還沒有完結,例如計算 J = 7 時,只有 6 個月已經完結, 所以用 7-2 = 5 作調整後的月數 = 6-1。 故 1 月 1 日至 7 月 12 日的總日數 = int (30.583333333 * (7 - 2)) + 29 + 12 = 193 int (Y / 100) = 世紀數。 0.75 * int ((I + int ((J-14) / 12)) / 100) = 0.75 * 世紀數 = 每 4 世紀減 3 日。 截至 1582 年時,每 4 世紀減 3 日則共減 11.25 日,多減了 1.25 日。 JD 公式中: +67 - 36.75 = +29 + 1.25 即:-36.75 = +29 + 1.25 - 67 所以: 4900 = 100 * 36.75 / 0.75 [/font]

  • 小小兔

    會員
    15 5 月, 2006 在 9:30 上午

    kskfk, 謝謝您的指導…..

    :f18::f18::f18:

  • ddzj

    會員
    26 7 月, 2006 在 2:48 上午

    计算方法越简单越好!

  • talang

    會員
    25 6 月, 2008 在 5:48 下午

    谢谢!先看看,不懂再向楼主请教。

Log in to reply.