陰曆陽曆之轉換
不論陰曆轉換為陽曆或陽曆轉換為陰曆,都需要先轉換為儒略日。
一、
陰曆轉換為陽曆
- 求算指定年陰曆各月代碼及其對應的合朔點(即新月點)JD值,計算時是以指定年前一年的11月為首月,指定年的10月為末月。
- 各月名稱代碼中。指定年前一年的11月為1,12月為2,指定年的1月為3,2月為4,餘類推。閏月多加0.5,例如8月為閏月,則其代碼為10.5。
- 順序求出相鄰兩個合朔點JD值之差,要先個別加上0.5,取整數後再相減,將此差值加1即為其所包含陰曆月份的天數。大月為30日,小月為29日。
- 將指定月之前的各月天數累加,再將之與第一個合朔點JD值與指定月的日期數加總。對於指定月日期數的計算必須以分數表示,例如8月5日6時,則8月所含的天數就是(5-1)+6/24=4.25日。
- 將此JD轉換為陽曆日期,即為所求。
二、
陽曆轉換為陰曆
- 將陽曆日期轉換為儒略日
- 對指定年求出其陰曆月代碼及其對應之合朔點JD值(合朔點所在日子即為初一)
- 將指定陽曆日期的JD值與陰曆各月初一的JD值逐一比較,即可判定它是在陰曆的哪一個月中。比較時,各JD值都要先加上0.5,然後取整數。因JD值是從西元前4713年的1月1日12時起算,加上0.5就是將其改為從1月1日0時起算。
- 找到指定日所在的陰曆月份後,還要判斷其是否為閏月,若其對應的月代碼含有小數0.5則表示該月為閏月。
- 將指定陽曆日期的JD值jds減去它所在陰曆月份的初一JD值jdm,再加上1,即為陰曆當月日期。以公式表示應為Int(jds-Int(jdm+0.5))+1