找回密碼
 注册
搜索
熱搜: 活动 交友 discuz
查看: 5325|回復: 0

儒略日數的計算

[複製鏈接]
發表於 2006-3-27 15:29:02 | 顯示全部樓層 |閱讀模式
儒略日起始時間為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日。
 樓主| 發表於 2006-3-27 15:30:32 | 顯示全部樓層
由儒略日數轉換成格勒哥里曆

轉換儒略日數(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日。
回復

使用道具 舉報

 樓主| 發表於 2006-3-27 15:31:18 | 顯示全部樓層
簡化儒略日數

從過去的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日的凌晨。
回復

使用道具 舉報

 樓主| 發表於 2006-3-27 15:32:29 | 顯示全部樓層
由儒略日計算星期  

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

W = (JD = 1.5) Mod 7

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

使用道具 舉報

發表於 2006-4-7 11:32:53 | 顯示全部樓層
求出给定年(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
中文简体字好一些:原因:现在的年轻人大多看不懂繁体字。不利于传播文化知识。
回復

使用道具 舉報

發表於 2006-4-27 17:28:55 | 顯示全部樓層
小小兔說:
儒略日起始時間為4713 BC
儒略日從中午12時開始,對應民用計算日期由凌晨開始多了半日所以再減0.5

小小兔在 https://forum.shusquare.com/foru ... &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
回復

使用道具 舉報

發表於 2006-4-27 17:39:44 | 顯示全部樓層
隨著一聲新年到,『富神爺爺』看顧您了,
你獲得了『富神爺爺』贈送現金427個美元。


至於 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
回復

使用道具 舉報

 樓主| 發表於 2006-5-15 17:30:35 | 顯示全部樓層
kskfk, 謝謝您的指導.....

回復

使用道具 舉報

發表於 2006-7-26 10:48:15 | 顯示全部樓層
计算方法越简单越好!
回復

使用道具 舉報

發表於 2008-6-26 01:48:45 | 顯示全部樓層
谢谢!先看看,不懂再向楼主请教。
回復

使用道具 舉報

手機版|小黑屋|術數縱橫

GMT+8, 2025-10-23 01:22 AM , Processed in 0.029275 second(s), 14 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表