기본 콘텐츠로 건너뛰기

안드로이드 앱 만들기 : 음력을 양력으로 변환 하기


원본출처: 티스토리 바로가기

예전에 어떤 앱을 만들기 할 때 사용했던 음력 변환 하는 소스를 어딘가에서 찾았던 거 같은데... 다시 한번 기억해 보기 위해서 적어 보기로 했다. 

 

https://billcorea.tistory.com/4

 

구글로간 음력 설명서

새로운 버젼으로 업데이트 해 드립니다. Google Calendar 에서는 아직 음력 관리를 원할하게 해 주지 않는 현상이 있었습니다. 그래서 과거에 만들었던 앱을 다시 만들어 보았습니다. 2020.06.20 구글에

billcorea.tistory.com

 

이건 어딘가에서 퍼왔던 소스인데, 기억이 가물 가물 하다.  

import java.text.SimpleDateFormat; import java.util.Date;  public class LunarTranser {     private static final int kk[] = {         1, 2, 1, 2, 1, 2, 2, 3, 2, 2,         1, 2, 1, 1, 2, 1, 2, 1, 2, 1,         2, 2, 1, 2, 2, 0, 1, 1, 2, 1,         1, 2, 1, 2, 2, 2, 1, 2, 0, 2,         1, 1, 2, 1, 3, 2, 1, 2, 2, 1,         2, 2, 2, 1, 1, 2, 1, 1, 2, 1,         2, 1, 2, 2, 0, 2, 1, 2, 1, 2,         1, 1, 2, 1, 2, 1, 2, 0, 2, 2,         1, 2, 3, 2, 1, 1, 2, 1, 2, 1,         2, 2, 1, 2, 2, 1, 2, 1, 1, 2,         1, 2, 1, 0, 2, 1, 2, 2, 1, 2,         1, 2, 1, 2, 1, 2, 0, 1, 2, 3,         2, 1, 2, 2, 1, 2, 1, 2, 1, 2,         1, 2, 1, 2, 1, 2, 1, 2, 2, 1,         2, 2, 0, 1, 1, 2, 1, 1, 2, 3,         2, 2, 1, 2, 2, 2, 1, 1, 2, 1,         1, 2, 1, 2, 1, 2, 2, 2, 0, 1,         2, 1, 2, 1, 1, 2, 1, 2, 1, 2,         2, 0, 2, 1, 2, 1, 2, 3, 1, 2,         1, 2, 1, 2, 1, 2, 2, 2, 1, 2,         1, 1, 2, 1, 2, 1, 2, 0, 1, 2,         2, 1, 2, 1, 2, 1, 2, 1, 2, 1,         0, 2, 1, 2, 3, 2, 2, 1, 2, 1,         2, 1, 2, 1, 2, 1, 2, 1, 2, 1,         2, 2, 1, 2, 1, 2, 0, 1, 2, 1,         1, 2, 1, 2, 2, 3, 2, 2, 1, 2,         1, 2, 1, 1, 2, 1, 2, 1, 2, 2,         2, 1, 0, 2, 1, 2, 1, 1, 2, 1,         2, 1, 2, 2, 2, 0, 1, 2, 1, 2,         1, 3, 2, 1, 1, 2, 2, 1, 2, 2,         2, 1, 2, 1, 1, 2, 1, 1, 2, 2,         1, 0, 2, 2, 1, 2, 2, 1, 1, 2,         1, 2, 1, 2, 0, 1, 2, 2, 1, 4,         1, 2, 1, 2, 1, 2, 1, 2, 1, 2,         1, 2, 1, 2, 2, 1, 2, 1, 2, 1,         0, 2, 1, 1, 2, 2, 1, 2, 1, 2,         2, 1, 2, 0, 1, 2, 3, 1, 2, 1,         2, 1, 2, 2, 2, 1, 2, 1, 2, 1,         1, 2, 1, 2, 1, 2, 2, 2, 1, 0,         2, 1, 2, 1, 1, 2, 3, 1, 2, 2,         1, 2, 2, 2, 1, 2, 1, 1, 2, 1,         1, 2, 2, 1, 2, 0, 2, 2, 1, 2,         1, 1, 2, 1, 1, 2, 1, 2, 0, 2,         2, 1, 2, 2, 3, 1, 2, 1, 2, 1,         1, 2, 2, 1, 2, 2, 1, 2, 1, 2,         1, 2, 1, 2, 0, 1, 2, 1, 2, 1,         2, 2, 1, 2, 1, 2, 1, 0, 2, 1,         3, 2, 1, 2, 2, 1, 2, 2, 1, 2,         1, 2, 1, 1, 2, 1, 2, 1, 2, 2,         2, 1, 2, 0, 1, 2, 1, 1, 2, 1,         2, 3, 2, 2, 1, 2, 2, 1, 2, 1,         1, 2, 1, 1, 2, 2, 1, 2, 2, 0,         2, 1, 2, 1, 1, 2, 1, 1, 2, 1,         2, 2, 0, 2, 1, 2, 2, 1, 3, 2,         1, 1, 2, 1, 2, 2, 1, 2, 2, 1,         2, 1, 2, 1, 2, 1, 1, 2, 0, 2,         1, 2, 1, 2, 2, 1, 2, 1, 2, 1,         1, 0, 2, 1, 2, 2, 3, 2, 1, 2,         2, 1, 2, 1, 2, 1, 1, 2, 1, 2,         1, 2, 2, 1, 2, 2, 1, 0, 2, 1,         1, 2, 1, 2, 1, 2, 2, 1, 2, 2,         0, 1, 2, 3, 1, 2, 1, 1, 2, 2,         1, 2, 2, 2, 1, 2, 1, 1, 2, 1,         1, 2, 1, 2, 2, 2, 0, 1, 2, 2,         1, 1, 2, 3, 1, 2, 1, 2, 2, 1,         2, 2, 2, 1, 1, 2, 1, 1, 2, 1,         2, 1, 0, 2, 2, 2, 1, 2, 1, 2,         1, 1, 2, 1, 2, 0, 1, 2, 2, 1,         2, 4, 1, 2, 1, 2, 1, 1, 2, 1,         2, 1, 2, 2, 1, 2, 2, 1, 2, 1,         2, 0, 1, 1, 2, 1, 2, 1, 2, 2,         1, 2, 2, 1, 0, 2, 1, 1, 4, 1,         2, 1, 2, 1, 2, 2, 2, 1, 2, 1,         1, 2, 1, 1, 2, 1, 2, 2, 2, 1,         0, 2, 2, 1, 1, 2, 1, 1, 4, 1,         2, 2, 1, 2, 2, 2, 1, 1, 2, 1,         1, 2, 1, 2, 1, 2, 0, 2, 2, 1,         2, 1, 2, 1, 1, 2, 1, 2, 1, 0,         2, 2, 1, 2, 2, 1, 4, 1, 1, 2,         1, 2, 1, 2, 1, 2, 2, 1, 2, 2,         1, 2, 1, 1, 2, 0, 1, 2, 1, 2,         1, 2, 2, 1, 2, 2, 1, 2, 0, 1,         1, 2, 1, 4, 1, 2, 1, 2, 2, 1,         2, 2, 1, 1, 2, 1, 1, 2, 1, 2,         2, 2, 1, 2, 0, 2, 1, 1, 2, 1,         1, 2, 1, 2, 2, 1, 2, 0, 2, 2,         3, 1, 2, 1, 1, 2, 1, 2, 1, 2,         2, 2, 1, 2, 1, 2, 1, 1, 2, 1,         2, 1, 2, 0, 2, 2, 1, 2, 1, 2,         1, 3, 2, 1, 2, 1, 2, 2, 1, 2,         2, 1, 2, 1, 1, 2, 1, 2, 1, 0,         2, 1, 2, 2, 1, 2, 1, 2, 1, 2,         1, 2, 0, 1, 2, 1, 2, 1, 4, 2,         1, 2, 1, 2, 1, 2, 1, 2, 1, 1,         2, 2, 1, 2, 2, 1, 2, 2, 0, 1,         1, 2, 1, 1, 2, 1, 2, 2, 1, 2,         2, 0, 2, 1, 1, 4, 1, 1, 2, 1,         2, 1, 2, 2, 2, 1, 2, 1, 2, 1,         1, 2, 1, 2, 1, 2, 2, 0, 2, 1,         2, 1, 2, 1, 1, 2, 3, 2, 1, 2,         2, 1, 2, 2, 1, 2, 1, 1, 2, 1,         2, 1, 2, 0, 1, 2, 2, 1, 2, 1,         2, 1, 2, 1, 2, 1, 0, 2, 1, 2,         1, 2, 2, 3, 2, 1, 2, 1, 2, 1,         2, 1, 2, 1, 2, 1, 2, 2, 1, 2,         1, 2, 0, 1, 2, 1, 1, 2, 1, 2,         2, 1, 2, 2, 1, 0, 2, 1, 2, 1,         3, 2, 1, 2, 1, 2, 2, 2, 1, 2,         1, 2, 1, 1, 2, 1, 2, 1, 2, 2,         2, 0, 1, 2, 1, 2, 1, 1, 2, 1,         1, 2, 2, 1, 0, 2, 2, 2, 3, 2,         1, 1, 2, 1, 1, 2, 2, 1, 2, 2,         1, 2, 2, 1, 1, 2, 1, 2, 1, 2,         0, 1, 2, 2, 1, 2, 1, 2, 3, 2,         1, 2, 1, 2, 1, 2, 1, 2, 1, 2,         2, 1, 2, 1, 2, 1, 0, 2, 1, 1,         2, 2, 1, 2, 1, 2, 2, 1, 2, 0,         1, 2, 1, 1, 2, 3, 2, 1, 2, 2,         2, 1, 2, 1, 2, 1, 1, 2, 1, 2,         1, 2, 2, 2, 1, 0, 2, 1, 2, 1,         1, 2, 1, 1, 2, 2, 2, 1, 0, 2,         2, 1, 2, 3, 1, 2, 1, 1, 2, 2,         1, 2, 2, 2, 1, 2, 1, 1, 2, 1,         1, 2, 1, 2, 0, 2, 2, 1, 2, 1,         2, 1, 2, 3, 2, 1, 1, 2, 2, 1,         2, 2, 1, 2, 1, 2, 1, 2, 1, 1,         0, 2, 2, 1, 2, 1, 2, 2, 1, 2,         1, 2, 1, 0, 2, 1, 1, 2, 1, 2,         4, 1, 2, 2, 1, 2, 1, 2, 1, 1,         2, 1, 2, 1, 2, 2, 1, 2, 2, 0,         1, 2, 1, 1, 2, 1, 1, 2, 2, 1,         2, 2, 0, 2, 1, 2, 1, 3, 2, 1,         1, 2, 2, 1, 2, 2, 2, 1, 2, 1,         1, 2, 1, 1, 2, 1, 2, 2, 0, 2,         1, 2, 2, 1, 1, 2, 1, 1, 2, 3,         2, 2, 1, 2, 2, 1, 2, 1, 2, 1,         1, 2, 1, 2, 0, 1, 2, 2, 1, 2,         2, 1, 2, 1, 2, 1, 1, 0, 2, 1,         2, 2, 1, 2, 3, 2, 2, 1, 2, 1,         2, 1, 1, 2, 1, 2, 1, 2, 2, 1,         2, 2, 1, 0, 2, 1, 1, 2, 1, 2,         1, 2, 2, 1, 2, 2, 0, 1, 2, 1,         1, 2, 3, 1, 2, 1, 2, 2, 2, 2,         1, 2, 1, 1, 2, 1, 1, 2, 1, 2,         2, 2, 0, 1, 2, 2, 1, 1, 2, 1,         1, 2, 1, 2, 2, 0, 1, 2, 2, 3,         2, 1, 2, 1, 1, 2, 1, 2, 1, 2,         2, 2, 1, 2, 1, 2, 1, 1, 2, 1,         2, 0, 1, 2, 2, 1, 2, 2, 1, 2,         3, 2, 1, 1, 2, 1, 2, 1, 2, 2,         1, 2, 1, 2, 2, 1, 2, 0, 1, 1,         2, 1, 2, 1, 2, 2, 1, 2, 2, 1,         0, 2, 1, 1, 2, 1, 3, 2, 2, 1,         2, 2, 2, 1, 2, 1, 1, 2, 1, 1,         2, 1, 2, 2, 2, 1, 0, 2, 2, 1,         1, 2, 1, 1, 2, 1, 2, 2, 1, 0,         2, 2, 2, 1, 3, 2, 1, 1, 2, 1,         2, 1, 2, 2, 2, 1, 2, 1, 2, 1,         1, 2, 1, 2, 1, 0, 2, 2, 1, 2,         2, 1, 2, 1, 1, 2, 1, 2, 0, 1,         2, 3, 2, 2, 1, 2, 1, 2, 2, 1,         1, 2, 1, 2, 1, 2, 1, 2, 2, 1,         2, 2, 1, 2, 0, 1, 1, 2, 1, 2,         1, 2, 3, 2, 2, 1, 2, 2, 1, 1,         2, 1, 1, 2, 1, 2, 2, 2, 1, 2,         0, 2, 1, 1, 2, 1, 1, 2, 1, 2,         2, 1, 2, 0, 2, 2, 1, 1, 2, 3,         1, 2, 1, 2, 1, 2, 2, 2, 1, 2,         1, 2, 1, 1, 2, 1, 2, 1, 2, 0,         2, 1, 2, 2, 1, 2, 1, 1, 2, 1,         2, 1, 0, 2, 1, 2, 4, 2, 1, 2,         1, 1, 2, 1, 2, 1, 2, 1, 2, 2,         1, 2, 1, 2, 1, 2, 1, 2, 0, 1,         2, 1, 2, 1, 2, 1, 2, 2, 3, 2,         1, 2, 1, 2, 1, 1, 2, 1, 2, 2,         2, 1, 2, 2, 0, 1, 1, 2, 1, 1,         2, 1, 2, 2, 1, 2, 2, 0, 2, 1,         1, 2, 1, 3, 2, 1, 2, 1, 2, 2,         2, 1, 2, 1, 2, 1, 1, 2, 1, 2,         1, 2, 2, 0, 2, 1, 2, 1, 2, 1,         1, 2, 1, 2, 1, 2, 0, 2, 1, 2,         2, 3, 2, 1, 1, 2, 1, 2, 1, 2,         1, 2, 2, 1, 2, 1, 2, 1, 2, 1,         2, 1, 0, 2, 1, 2, 1, 2, 2, 1,         2, 1, 2, 1, 2, 0, 1, 2, 3, 2,         1, 2, 1, 2, 2, 1, 2, 1, 2, 1,         2, 1, 1, 2, 1, 2, 2, 1, 2, 2,         1, 0, 2, 1, 2, 1, 1, 2, 3, 2,         1, 2, 2, 2, 1, 2, 1, 2, 1, 1,         2, 1, 2, 1, 2, 2, 2, 0, 1, 2,         1, 2, 1, 1, 2, 1, 1, 2, 2, 2,         0, 1, 2, 2, 1, 2, 3, 1, 2, 1,         1, 2, 2, 1, 2, 2, 1, 2, 2, 1,         1, 2, 1, 1, 2, 2, 0, 1, 2, 1,         2, 2, 1, 2, 1, 2, 1, 2, 1, 0,         2, 1, 2, 3, 2, 1, 2, 2, 1, 2,         1, 2, 1, 2, 1, 1, 2, 1, 2, 2,         1, 2, 2, 1, 2, 0, 1, 2, 1, 1,         2, 1, 2, 3, 2, 2, 2, 1, 2, 1,         2, 1, 1, 2, 1, 2, 1, 2, 2, 2,         1, 0, 2, 1, 2, 1, 1, 2, 1, 1,         2, 2, 1, 2, 0, 2, 2, 1, 2, 1,         1, 4, 1, 1, 2, 1, 2, 2, 2, 2,         1, 2, 1, 1, 2, 1, 1, 2, 1, 2,         0, 2, 2, 1, 2, 1, 2, 1, 2, 1,         1, 2, 1, 0, 2, 2, 1, 2, 2, 3,         2, 1, 2, 1, 2, 1, 1, 2, 1, 2,         2, 1, 2, 2, 1, 2, 1, 2, 1, 0,         2, 1, 1, 2, 1, 2, 2, 1, 2, 2,         1, 2, 0, 1, 2, 3, 1, 2, 1, 2,         1, 2, 2, 2, 1, 2, 1, 2, 1, 1,         2, 1, 1, 2, 2, 1, 2, 2, 0     };     private final static String yuk[] = {"갑", "을", "병", "정", "무", "기", "경", "신", "임", "계"};     private final static String gap[] = {"자", "축", "인", "묘", "진", "사", "오", "미", "신", "유", "술", "해"};     private final static String ddi[] = {"쥐띠", "소띠", "범띠", "토끼띠", "용띠", "뱀띠", "말띠", "양띠", "원숭이띠", "닭띠", "개띠", "돼지띠"};     private final static String week[] = {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};      private static final int m[] = {         31, 28, 31, 30, 31, 30, 31, 31, 30, 31,         30, 31     };      private static Date init_date;      private static final String errMsg = "입력값 에러";      /**      * 음력을 양력으로      *      * @param       TranseDay    음력일('yyyyMMdd')      * @param       leapyes   윤달 여부      * @return      String    처리결과 양력일 엔티티      * @throws      java.lang.Exception      */     public static String LunarTranse(String TranseDay, boolean leapyes) throws Exception {         @SuppressWarnings("unused") 		int dt[] = new int[163];         int lyear = Integer.parseInt(TranseDay.substring(0,4));         int lmonth = Integer.parseInt(TranseDay.substring(4,6));         int lday = Integer.parseInt(TranseDay.substring(6,8));          if(!leapyes && !verifyDate(lyear, lmonth, lday, "solar-"))         {             return "";         }         if(leapyes && !verifyDate(lyear, lmonth, lday, "solar+"))         {             return "";          }         int m1 = -1;         long td = 0L;         if(lyear != 1881)         {             m1 = lyear - 1882;             for(int i = 0; i <= m1; i++)             {                 for(int j = 0; j < 13; j++)                     td = td + (long)kk[i * 13 + j];                  if(kk[i * 13 + 12] == 0)                     td = td + 336L;                 else                     td = td + 362L;             }          }         m1++;         int n2 = lmonth - 1;         int m2 = -1;         do         {             m2++;             if(kk[m1 * 13 + m2] > 2)             {                 td = td + 26L + (long)kk[m1 * 13 + m2];                 n2++;                 continue;             }             if(m2 == n2)                 break;             td = td + 28L + (long)kk[m1 * 13 + m2];         } while(true);         if(leapyes)             td = td + 28L + (long)kk[m1 * 13 + m2];         td = td + (long)lday + 29L;         m1 = 1880;         do         {             m1++;             boolean leap = m1 % 400 == 0 || m1 % 100 != 0 && m1 % 4 == 0;             if(leap)                 m2 = 366;             else                 m2 = 365;             if(td < (long)m2)                 break;             td = td - (long)m2;         } while(true);         int syear = m1;         m[1] = m2 - 337;         m1 = 0;         do         {             m1++;             if(td <= (long)m[m1 - 1])                 break;             td = td - (long)m[m1 - 1];         } while(true);         int smonth = m1;         int sday = (int)td;         long y = (long)syear - 1L;         td = ((y * 365L + y / 4L) - y / 100L) + y / 400L;         boolean leap = syear % 400 == 0 || syear % 100 != 0 && syear % 4 == 0;         if(leap)             m[1] = 29;         else             m[1] = 28;         for(int i = 0; i < smonth - 1; i++)             td = td + (long)m[i];          td = td + (long)sday;         @SuppressWarnings("unused") 		int w = (int)(td % 7L);         int i = (int)(td % 10L);         i = (i + 4) % 10;         int j = (int)(td % 12L);         j = (j + 2) % 12;         @SuppressWarnings("unused") 		int k1 = (lyear + 6) % 10;         @SuppressWarnings("unused") 		int k2 = (lyear + 8) % 12;          String sValue= String.valueOf(syear);          if(smonth<10)             sValue+="0";          sValue+= String.valueOf(smonth);          if(sday<10)             sValue+="0";          sValue+= String.valueOf(sday);          String return_value = sValue ;          return return_value;     }     /**      * 양력을 음력으로      *      * @param       TranseDay    양력일('yyyyMMdd')      * @return      String    처리결과 음력일      * @throws      java.lang.Exception      */     public static String solarTranse(String TranseDay) throws Exception {          // 2020.04.15 : 음력의 날자도 당해년도 음력 날자를 찾아서 주는 것으로.         long time = System.currentTimeMillis();         SimpleDateFormat sdf = new SimpleDateFormat("yyyymmdd");         java.sql.Date dd = new java.sql.Date(time);         TranseDay = sdf.format(dd).substring(0, 4) + TranseDay.substring(4, 8) ;          int dt[] = new int[163];         for(int i = 0; i < 163; i++)         {             dt[i] = 0;             for(int j = 0; j < 12; j++)                 switch(kk[i * 13 + j])                 {                 case 1: // '\001'                 case 3: // '\003'                     dt[i] = dt[i] + 29;                     break;                  case 2: // '\002'                 case 4: // '\004'                     dt[i] = dt[i] + 30;                     break;                 }              switch(kk[i * 13 + 12])              {             case 1: // '\001'             case 3: // '\003'                 dt[i] = dt[i] + 29;                 break;              case 2: // '\002'             case 4: // '\004'                 dt[i] = dt[i] + 30;                 break;             }         }         int syear = Integer.parseInt(TranseDay.substring(0,4));         int smonth = Integer.parseInt(TranseDay.substring(4,6));         int sday = Integer.parseInt(TranseDay.substring(6,8));          long k11 = syear - 1;         long td2 = ((k11 * 365L + k11 / 4L) - k11 / 100L) + k11 / 400L;         boolean ll = syear % 400 == 0 || syear % 100 != 0 && syear % 4 == 0;         if(ll)             m[1] = 29;         else             m[1] = 28;          if(!verifyDate(syear, smonth, sday, "lunar"))         {             throw new Exception("Date Error [" + syear + smonth + sday + "]");          }                  for(int i = 0; i < smonth - 1; i++)             td2 = td2 + (long)m[i];          td2 = td2 + (long)sday;           long td = (td2 - 0xa7a5eL) + 1L;         long td0 = dt[0];         int i=0;         for(i = 0; i < 163; i++)         {             if(td <= td0)                 break;             td0 = td0 + (long)dt[i + 1];         }          int lyear = i + 1881;         td0 = td0 - (long)dt[i];         td = td - td0;         int jcount=0;         if(kk[i * 13 + 12] != 0)             jcount = 13;         else             jcount = 12;         int m2 = 0;         int j=0;         int m1;         for(j = 0; j < jcount; j++)         {             if(kk[i * 13 + j] <= 2)                 m2++;             if(kk[i * 13 + j] <= 2)                 m1 = kk[i * 13 + j] + 28;             else                 m1 = kk[i * 13 + j] + 26;             if(td <= (long)m1)                 break;             td = td - (long)m1;         }          @SuppressWarnings("unused") 		int m0 = j;         long lmonth = m2;         int lday = (int)td;         @SuppressWarnings("unused") 		int w = (int)(td2 % 7L);         i = (int)((td2 + 4L) % 10L);         j = (int)((td2 + 2L) % 12L);         @SuppressWarnings("unused") 		int i1 = (lyear + 6) % 10;         @SuppressWarnings("unused") 		int j1 = (lyear + 8) % 12;         String sValue= String.valueOf(lyear);          if(lmonth<10)             sValue+="0";          sValue+= String.valueOf(lmonth);          if(lday<10)             sValue+="0";          sValue+= String.valueOf(lday);                   String return_value = sValue ;          return return_value;     }      private static boolean verifyDate(int k, int l, int l1, String s)     {         if(k < 1881 || k > 2043 || l < 1 || l > 12)             return false;         if(s.equals("lunar") && l1 > m[l - 1])             return false;         if(s.equals("solar+"))         {             if(kk[(k - 1881) * 13 + 12] < 1)                 return false;             if(kk[(k - 1881) * 13 + l] < 3)                 return false;             if(kk[(k - 1881) * 13 + l] + 26 < l1)                 return false;         }         if(s.equals("solar-"))         {             int j = l - 1;             for(int i = 1; i <= 12; i++)                 if(kk[((k - 1881) * 13 + i) - 1] > 2)                     j++;              if(l1 > kk[(k - 1881) * 13 + j] + 28)                 return false;         }         return true;     } 	public static String[] getYuk() { 		return yuk; 	} 	public static String[] getGap() { 		return gap; 	} 	public static String[] getDdi() { 		return ddi; 	} 	public static String[] getWeek() { 		return week; 	} 	public static void setInit_date(Date init_date) { 		LunarTranser.init_date = init_date; 	} 	public static Date getInit_date() { 		return init_date; 	} 	public static String getErrmsg() { 		return errMsg; 	}    }

그 예전 부터 지금까지 잘 사용하고 있으니, 소스의 변환 능력은 검증이 되었다고 볼 수 있을 것 같다.

 

사용하는 부분은 다음과 같다.   먼저 음력을 양력으로 변환 하기

LunarTranse(String TranseDay, boolean leapyes)

기준일자(yyyyMMdd : 8자리 숫자) 와 윤달 여부만 전달 하면  양력 으로 변환된 날자가 돌아온다.

 

다음은 양력을 음력으로 변환하기

solarTranse(String TranseDay)

기준일자(yyyyMMdd : 8자리 숫자)을 전달하면 음력으로 변환된 날자가 돌아온다.

 

이런 기능의 사용예시는 앞에서 기술한 바와 같이 앱으로 활용하고 있다.

 

https://play.google.com/store/apps/details?id=com.nari.lunar3google 

 

음력달력, 일정관리 - Google Play 앱

음력을 양력으로 변환하여 관리 합니다. 양력은 음력으로 관리 합니다.

play.google.com

 

댓글

이 블로그의 인기 게시물

이번주 로또 당첨 번호을 알려 드립니다.

Good Lock !!! 참조 site 티스토리 ## 로또 번호 예측 분석 및 5개 조합 제안 (자세한 설명 포함) 제공하신 1147회차부터 1167회차까지의 로또 당첨 번호 데이터를 분석하여 다음 회차(1168회차)의 예상 번호 조합 5개를 제시합니다. 분석은 제시된 6가지 통계적 패턴을 기반으로 이루어지며, 각 패턴의 주기성과 이전 회차와의 비교를 통해 예측합니다. 마지막 10회차 당첨 번호와 중복되지 않는 조합을 우선적으로 제시합니다. **1. 분석 방법:** 각 회차의 당첨 번호 6개 (7개 중 마지막 숫자 제외)를 사용하여 다음과 같은 통계 분석을 수행합니다. * **연속 번호 간격:** 연속된 번호가 나타날 때 그 사이의 간격을 계산합니다. (예: 1, 2, 4의 경우 간격은 1, 2입니다.) * **홀짝 개수 및 간격:** 홀수와 짝수의 개수를 세고, 홀수와 짝수가 번갈아 나오는 간격을 계산합니다. * **총합 및 총합 간격:** 각 회차의 번호 총합을 계산하고, 같은 총합이 이전에 나타났던 회차까지의 간격을 구합니다. * **평균 및 평균 간격:** 각 회차의 번호 평균을 계산하고, 같은 평균이 이전에 나타났던 회차까지의 간격을 구합니다. * **일치율 및 일치율 간격:** 위 1~4번의 결과들을 종합하여 일치율을 계산하고, 같은 일치율이 이전에 나타났던 회차까지의 간격을 구합니다. (일치율 계산은 각 지표의 비율을 종합적으로 고려하는 방식으로, 단순한 수치 합산이 아닌, 전문적인 통계 기법이 필요할 수 있습니다. 이 예시에서는 간략화된 추세 분석 방식을 사용합니다.) **2. 데이터 분석 및 패턴 발견 (간략화):** 제공된 데이터의 양이 많지 않고, 복잡한 통계 기법을 적용하기에는 제한적이므로, 간략화된 추세 분석을 통해 주요 패턴을 파악합니다. 실제 분석에서는 더욱 정교한 통계 기법 (예: 시계열 분석, 마르코프 체인 등)을 적용해야 더 정확한 예측이 가능합니다. **3. 예상 번호 조합 제...

이번주 로또 당첨 번호을 알려 드립니다.

Good Lock !!! 참조 site 티스토리 ## 로또 분석 및 예상 번호 추천 (1167회차) 제공해주신 1146회부터 1166회차까지의 로또 당첨번호 데이터를 분석하여 1167회차 예상 번호를 제시합니다. 아래 분석은 제공된 데이터에 기반하며, 로또는 순전히 확률에 의존하는 게임이므로 예측의 정확성을 보장할 수 없습니다. **1. 분석 방법:** 제공하신 데이터를 바탕으로 다음과 같은 통계적 분석을 실시했습니다. * **연속 번호 간격:** 각 회차의 당첨 번호 6개 중 연속된 숫자의 개수와 간격을 계산했습니다. 예를 들어 {1, 3, 5, 6, 8, 10} 이라면 연속된 숫자는 {5, 6}이며 간격은 1입니다. 여러 구간이 존재할 경우 각 구간의 간격을 모두 계산합니다. * **홀짝 개수 및 간격:** 각 회차의 홀수와 짝수의 개수를 계산하고, 이들의 비율 변화를 분석했습니다. * **총합 및 평균:** 각 회차의 당첨 번호 총합과 평균을 계산하고, 동일한 총합 또는 평균이 나타난 회차 간의 간격을 분석했습니다. * **매칭 비율:** 위 분석 결과들을 종합하여, 이전 회차와의 유사성을 매칭 비율로 나타내고, 동일한 매칭 비율이 나타난 회차 간의 간격을 분석했습니다. * **패턴 분석:** 위 분석 결과들을 통해 나타나는 패턴들을 분석하고, 주기성을 파악하여 다음 회차에 나타날 가능성이 높은 패턴을 예측했습니다. **2. 분석 결과 및 예상 번호:** (실제 데이터 분석을 수행해야 하므로, 아래는 예시 결과입니다. 실제 분석 결과는 위에 언급된 방법으로 계산해야 합니다.) 위 분석 결과를 바탕으로 다음과 같은 예상 번호 5가지를 제시합니다. 각 조합은 분석 결과의 패턴 및 이전 회차와의 차별성을 고려하여 선정되었습니다. 마지막 10회차 당첨 번호와 중복되지 않도록 주의했습니다. * **예상 번호 1:** 03, 12, 25, 31, 38, 42 * **예상 번호 2:** 07, 15, 21, 29, 36, 45 *...