記憶力實在是不太好. 所以還是先寫吧. 日干支呢, 等一下再想
年干支計算方法最簡單.
String[] sky ={
"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"
};
String[] earth ={
"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"
};
myyear = (int) setbirth + 1922;
int m1=((myyear-3) % 10);
if(m1==0){
m1=9;
}else{
m1--;
}
int m2=((myyear-3) % 12);
if(m2==0){
m2=11;
}else{
m2--;
}
String yearsky =sky[m1];
String yearearth =earth[m2];
int monthskyindex;
int monthearthindex;
以陣列取回就結束.
月干支的歌訣很簡單. 只不過要寫成程式要想一下
//甲己之年丙作首
if(yearsky.equals("甲")||yearsky.equals("巳")){
monthskyindex=2;
monthearthindex=2;
}
//乙庚之歲戊为頭
if(yearsky.equals("乙")||yearsky.equals("庚")){
monthskyindex=4;
monthearthindex=2; //為何都是2, 因為書上寫的 每年正月都是寅
}
//丙辛之歲庚寅上
if(yearsky.equals("丙")||yearsky.equals("辛")){
monthskyindex=6;
monthearthindex=2; //為何都是2, 因為書上寫的 每年正月都是寅
}
//丁壬壬寅順行流
if(yearsky.equals("丁")||yearsky.equals("壬")){
monthskyindex=8;
monthearthindex=2; //為何都是2, 因為書上寫的 每年正月都是寅
}
//若言戊癸何方起,甲寅之上去尋求。
if(yearsky.equals("戊")||yearsky.equals("癸")){
monthskyindex=0;
monthearthindex=2; //為何都是2, 因為書上寫的 每年正月都是寅
}
//接下來呢,看看是幾月,
int monthindex1 = (monthskyindex+k) % 10;
int monthindex2 = (monthearthindex+k) % 12;
大概是這樣子, 等一下再試試
公式: (民國年-90)*5+(民國年-90)/4+A=X
1. (民國年-90)/4這一項,只取整數。
2. A代表由當年元旦算至欲求之日的總天數。
3. X/60,取餘數=>Y
4. Y之個位數=>天干
5. Y/12,取餘數=>地支
6. 此公式須由國曆日期來算,而非農曆。
沒有留言:
張貼留言