일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- phonegap
- JDOM
- MySQL
- PHP
- swingx
- JSON
- MFC
- Google Map
- Android
- GPS
- Ajax
- tomcat
- sencha touch
- Eclipse
- oracle
- dock
- jQuery
- Struts
- appspresso
- jsr 296
- iBATIS
- PLSQL
- 전자정부프레임워크
- 선택적조인
- WebLogic
- rowspan
- 가우스
- node.js
- Spring
- ibsheet
- Today
- Total
Where The Streets Have No Name
양력을 음력으로(메소드) 본문
/**
양력을 음력으로 변환하는 메소드입니다.
@param yang 양력일
@return 음력일
*/
public static Calendar yang2eum(Calendar yang) {
String lsLtbl[] = new String[163];
int llDt[] = new int[163];
long llDayPerMonth[] = new long[13];
long llM1, llM2, llMonth, llTotalDay0, llTotalDay, llTotalDay1;
long llTotalDay2, llK11, llCount, llLunYear, llInYear, llInMonth, llInDay;
int llI, llJ;
lsLtbl[0] = "1212122322121";
lsLtbl[1] = "1212121221220";
lsLtbl[2] = "1121121222120";
lsLtbl[3] = "2112132122122";
lsLtbl[4] = "2112112121220";
lsLtbl[5] = "2121211212120";
lsLtbl[6] = "2212321121212";
lsLtbl[7] = "2122121121210";
lsLtbl[8] = "2122121212120";
lsLtbl[9] = "1232122121212";
lsLtbl[10] = "1212121221220";
lsLtbl[11] = "1121123221222";
lsLtbl[12] = "1121121212220";
lsLtbl[13] = "1212112121220";
lsLtbl[14] = "2121231212121";
lsLtbl[15] = "2221211212120";
lsLtbl[16] = "1221212121210";
lsLtbl[17] = "2123221212121";
lsLtbl[18] = "2121212212120";
lsLtbl[19] = "1211212232212";
lsLtbl[20] = "1211212122210";
lsLtbl[21] = "2121121212220";
lsLtbl[22] = "1212132112212";
lsLtbl[23] = "2212112112210";
lsLtbl[24] = "2212211212120";
lsLtbl[25] = "1221412121212";
lsLtbl[26] = "1212122121210";
lsLtbl[27] = "2112212122120";
lsLtbl[28] = "1231212122212";
lsLtbl[29] = "1211212122210";
lsLtbl[30] = "2121123122122";
lsLtbl[31] = "2121121122120";
lsLtbl[32] = "2212112112120";
lsLtbl[33] = "2212231212112";
lsLtbl[34] = "2122121212120";
lsLtbl[35] = "1212122121210";
lsLtbl[36] = "2132122122121";
lsLtbl[37] = "2112121222120";
lsLtbl[38] = "1211212322122";
lsLtbl[39] = "1211211221220";
lsLtbl[40] = "2121121121220";
lsLtbl[41] = "2122132112122";
lsLtbl[42] = "1221212121120";
lsLtbl[43] = "2121221212110";
lsLtbl[44] = "2122321221212";
lsLtbl[45] = "1121212212210";
lsLtbl[46] = "2112121221220";
lsLtbl[47] = "1231211221222";
lsLtbl[48] = "1211211212220";
lsLtbl[49] = "1221123121221";
lsLtbl[50] = "2221121121210";
lsLtbl[51] = "2221212112120";
lsLtbl[52] = "1221241212112";
lsLtbl[53] = "1212212212120";
lsLtbl[54] = "1121212212210";
lsLtbl[55] = "2114121212221";
lsLtbl[56] = "2112112122210";
lsLtbl[57] = "2211211412212";
lsLtbl[58] = "2211211212120";
lsLtbl[59] = "2212121121210";
lsLtbl[60] = "2212214112121";
lsLtbl[61] = "2122122121120";
lsLtbl[62] = "1212122122120";
lsLtbl[63] = "1121412122122";
lsLtbl[64] = "1121121222120";
lsLtbl[65] = "2112112122120";
lsLtbl[66] = "2231211212122";
lsLtbl[67] = "2121211212120";
lsLtbl[68] = "2212121321212";
lsLtbl[69] = "2122121121210";
lsLtbl[70] = "2122121212120";
lsLtbl[71] = "1212142121212";
lsLtbl[72] = "1211221221220";
lsLtbl[73] = "1121121221220";
lsLtbl[74] = "2114112121222";
lsLtbl[75] = "1212112121220";
lsLtbl[76] = "2121211232122";
lsLtbl[77] = "1221211212120";
lsLtbl[78] = "1221212121210";
lsLtbl[79] = "2121223212121";
lsLtbl[80] = "2121212212120";
lsLtbl[81] = "1211212212210";
lsLtbl[82] = "2121321212221";
lsLtbl[83] = "2121121212220";
lsLtbl[84] = "1212112112210";
lsLtbl[85] = "2223211211221";
lsLtbl[86] = "2212211212120";
lsLtbl[87] = "1221212321212";
lsLtbl[88] = "1212122121210";
lsLtbl[89] = "2112212122120";
lsLtbl[90] = "1211232122212";
lsLtbl[91] = "1211212122210";
lsLtbl[92] = "2121121122210";
lsLtbl[93] = "2212312112212";
lsLtbl[94] = "2212112112120";
lsLtbl[95] = "2212121232112";
lsLtbl[96] = "2122121212110";
lsLtbl[97] = "2212122121210";
lsLtbl[98] = "2112124122121";
lsLtbl[99] = "2112121221220";
lsLtbl[100] = "1211211221220" ;
lsLtbl[101] = "2121321122122";
lsLtbl[102] = "2121121121220";
lsLtbl[103] = "2122112112322";
lsLtbl[104] = "1221212112120";
lsLtbl[105] = "1221221212110";
lsLtbl[106] = "2122123221212";
lsLtbl[107] = "1121212212210";
lsLtbl[108] = "2112121221220";
lsLtbl[109] = "1211231212222";
lsLtbl[110] = "1211211212220";
lsLtbl[111] = "1221121121220";
lsLtbl[112] = "1223212112121";
lsLtbl[113] = "2221212112120";
lsLtbl[114] = "1221221232112";
lsLtbl[115] = "1212212122120";
lsLtbl[116] = "1121212212210";
lsLtbl[117] = "2112132212221";
lsLtbl[118] = "2112112122210";
lsLtbl[119] = "2211211212210";
lsLtbl[120] = "2221321121212";
lsLtbl[121] = "2212121121210";
lsLtbl[122] = "2212212112120";
lsLtbl[123] = "1232212122112";
lsLtbl[124] = "1212122122120";
lsLtbl[125] = "1121212322122";
lsLtbl[126] = "1121121222120";
lsLtbl[127] = "2112112122120";
lsLtbl[128] = "2211231212122";
lsLtbl[129] = "2121211212120";
lsLtbl[130] = "2122121121210";
lsLtbl[131] = "2124212112121";
lsLtbl[132] = "2122121212120";
lsLtbl[133] = "1212121223212";
lsLtbl[134] = "1211212221220";
lsLtbl[135] = "1121121221220";
lsLtbl[136] = "2112132121222";
lsLtbl[137] = "1212112121220";
lsLtbl[138] = "2121211212120";
lsLtbl[139] = "2122321121212";
lsLtbl[140] = "1221212121210";
lsLtbl[141] = "2121221212120";
lsLtbl[142] = "1232121221212";
lsLtbl[143] = "1211212212210";
lsLtbl[144] = "2121123212221";
lsLtbl[145] = "2121121212220";
lsLtbl[146] = "1212112112220";
lsLtbl[147] = "1221231211221";
lsLtbl[148] = "2212211211220";
lsLtbl[149] = "1212212121210";
lsLtbl[150] = "2123212212121";
lsLtbl[151] = "2112122122120";
lsLtbl[152] = "1211212322212";
lsLtbl[153] = "1211212122210";
lsLtbl[154] = "2121121122120";
lsLtbl[155] = "2212114112122";
lsLtbl[156] = "2212112112120";
lsLtbl[157] = "2212121211210";
lsLtbl[158] = "2212232121211";
lsLtbl[159] = "2122122121210";
lsLtbl[160] = "2112122122120";
lsLtbl[161] = "1231212122212";
lsLtbl[162] = "1211211221220";
llDayPerMonth[0] = 31;
llDayPerMonth[1] = 0;
llDayPerMonth[2] = 31;
llDayPerMonth[3] = 30;
llDayPerMonth[4] = 31;
llDayPerMonth[5] = 30;
llDayPerMonth[6] = 31;
llDayPerMonth[7] = 31;
llDayPerMonth[8] = 30;
llDayPerMonth[9] = 31;
llDayPerMonth[10] = 30;
llDayPerMonth[11] = 31;
llTotalDay = 0;
llInYear = yang.get(Calendar.YEAR);
llInMonth = yang.get(Calendar.MONTH) + 1;
llInDay = yang.get(Calendar.DATE);
llInDay++;
if ((llInYear < 1881) || (llInYear > 2043)) {
return null;
}
for (llI = 0; llI < 163; llI++) {
llDt[llI] = 0;
for (llJ = 0; llJ < 12; llJ++) {
String temp = lsLtbl[llI].substring(llJ, llJ + 1);
if (temp.equals("1") || temp.equals("3")) {
llDt[llI] = llDt[llI] + 29;
} else if (temp.equals("2") || temp.equals("4")) {
llDt[llI] = llDt[llI] + 30;
}
}
String temp = lsLtbl[llI].substring(12);
if (temp.equals("1") || temp.equals("3")) {
llDt[llI] = llDt[llI] + 29;
} else if (temp.equals("2") || temp.equals("4")) {
llDt[llI] = llDt[llI] + 30;
}
}
// 1880년 1월 30일까지의 총일수
llTotalDay1 = 1880 * 365 + 1880 / 4 - 1880 / 100 + 1880 / 400 + 30;
llK11 = llInYear - 1;
// 입력된 년도 1년전까지의 총일수
llTotalDay2 = llK11 * 365 + llK11 / 4 - llK11 / 100 + llK11 / 400;
if (((llInYear % 400) == 0) || ((llInYear % 100) != 0) && ((llInYear % 4) == 0)) {
llDayPerMonth[1] = 29;
} else {
llDayPerMonth[1] = 28;
}
for (llI = 0; llI < (llInMonth - 1); llI++) {
llTotalDay2 = llTotalDay2 + llDayPerMonth[llI];
}
// 입력된 일자까지의 총일수
llTotalDay2 = llTotalDay2 + llInDay;
// 1880-01-30 부터 현재까지의 총일수
llTotalDay = llTotalDay2 - llTotalDay1; // + 1
// 1881년부터 현재까지의 총일수와 Table상의 숫자(음력)들의 합을 비교 반복
llTotalDay0 = llDt[0];
for (llI = 0; llI < 163; llI++) {
if (llTotalDay <= llTotalDay0) {
break;
}
llTotalDay0 = llTotalDay0 + llDt[llI + 1];
}
// 음력년도
llLunYear = llI + 1880;
// 현재년도의 음력일수 감산
llTotalDay0 = llTotalDay0 - llDt[llI];
// 양력 총일수에서 음력 총일수 감산
llTotalDay = llTotalDay - llTotalDay0;
if (lsLtbl[llI].substring(13) == "0") {
llCount = 12;
} else {
llCount = 13;
}
llM2 = 0;
for (llJ = 0; llJ < llCount; llJ++) {
if (Integer.parseInt(lsLtbl[llI].substring(llJ, llJ + 1)) <= 2) {
llM2++;
llM1 = Long.parseLong(lsLtbl[llI].substring(llJ, llJ + 1)) + 28;
} else {
llM1 = Long.parseLong(lsLtbl[llI].substring(llJ, llJ + 1)) + 26;
}
if (llTotalDay <= llM1) {
break;
}
llTotalDay = llTotalDay - llM1;
}
Calendar c = Calendar.getInstance();
c.set((int) llLunYear, ((int) llM2 - 1), (int) llTotalDay);
return c;
}