공휴일 달력표시정보 구성이 필요해서 음력 날짜를 양력 날짜로 변환하는 작업이 필요했다. 

 

인터넷을 찾아보니 몇가지 안을 도출하게 되었다. 

1. ibm에서 제공한 중국음력 유틸리티 라이브러리 참조

 - com.ibm.icu.util.ChineseCalendar 

 > 장점 : 범용적으로 많이 사용한 듯(표준프레임워크에서도 해당라이브러리를 사용하여 기능 구현) 하여 관려 자료가 많음

 > 단점 : 중국 음력과 한국 음력의 차이로 간혹 음력일자의 오차 발생 - 치명적 결함으로 비추

2. 공공API 조회

 - 한국천문연구원에서 제공하는 양력, 음력 매핑정보 조회 API를 이용하여 날짜조회

 > 장점 : 가장 정확하고 다른 기능에 부담없이 사용 가능

 > 단점 : 외부연계 필요, API 변경사항 현행화 관리 필요

3. 변환로직 직접 구현

 - 한국천문연구원에서 제공하는 음력일자를 기준으로 메타데이터를 구성하여 매핑로직 구현

 > 장점 : 이슈에 적극적으로 대응할 수 있다. (현실적 대안 : 관련 소스를 참조하여 디버깅 후 사용)

 > 단점 : 로직구현 및 천문연구원 메타정보 변경시 현행화 필요

4. 매핑정보 수동관리

 - 천문연구원에서 제공하는 날짜 대비 매핑일자를 메타정보로 관리 (테이블, 공통코드 등)

 > 장점 : 구현 및 관리에 가장 부담이 적음

 > 단점 : 매핑정보 관리 및 범용성이 떨어짐 (등록한 날짜만 사용가능)

 

서비스에서는 4번을 적극적으로 제안했지만, 3번이 현실적인 대안으로 보인다. 

* [참고1] 3번 검토자료

https://github.com/corestone/jsphelper3/blob/master/src/chk/jsphelper/util/LunarCalendarUtil.java

 - 음력 20330815 날짜 조회시 0908일이 조회되어야 하는데, 1007 로 응답된는 버그 확인
 > 80093aa

/* 2031 ~ 2040 까지 */
{ 2, 1, 5, 2, 1, 2, 2, 1, 2, 1, 2, 1, 384 }, // 2000년
{ 2, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 355 }, // 2000년
{ 1, 2, 1, 1, 2, 1, 5, 2, 2, 2, 1, 2, 384 }, // 2000년 <-해당 메타정보
{ 1, 2, 1, 1, 2, 1, 2, 1, 2, 2, 1, 2, 384 }, // 2000년 <-수정 메타정보

* [참고2] 아래 블로그의 소스도 테스트한 결과 동일한 날짜에서 동일한 버그 확인

 - 아마 천문연구원에서 제공하던 메타정보가 변경된게 아닐까?

https://billcorea.tistory.com/113

 

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

예전에 어떤 앱을 만들기 할 때 사용했던 음력 변환 하는 소스를 어딘가에서 찾았던 거 같은데... 다시 한번 기억해 보기 위해서 적어 보기로 했다. https://billcorea.tistory.com/4 구글로간 음력 설명서

billcorea.tistory.com

 

* [참고3] 한국의 양력과 중국의 양력이 다를 수 있어서 ibm 라이브러리 사용을 제외하게된 참고자료

https://blog.naver.com/birdparang/221445233118

 

[자바] 양력에서 음력 변환 - ChineseCalendar 클래스가 맞지 않는 이유, 한국과 중국의 음력 차이

((year % 4) == 0 && (year % 100) != 0) || (year % 400) == 0; 위 코드는 양력의 윤년(2월 29일...

blog.naver.com

 

결론.

[참고1] 자료의 버그를 수정하여 유틸로 사용

 - 테스트 데이터 구성 : 천문연구원의 2023~2050 음력 공휴일(설날, 부처님오신날, 추석) 매핑자료 검색

 > https://astro.kasi.re.kr/life/pageView/8

(행활천문관 > 음양력변환계산 > 특정음력일찾기 : 2023~2050 음력일자 조회 결과)

 

음양력변환계산 | 생활천문관 | 천문우주지식정보

양력 날짜를 입력하여 대응하는 음력 날짜 확인 ※ 입력범위 : -59년 02월 13일 ~ 2050년 12월 31일 --> ※ 1582년 로마 교황 그레고리우스 13세는 율리우스력을 그레고리력으로 개정함에 따라 (율리우스

astro.kasi.re.kr

 

 

test 메타정보.txt
0.01MB

+ Recent posts