공휴일 달력표시정보 구성이 필요해서 음력 날짜를 양력 날짜로 변환하는 작업이 필요했다.
인터넷을 찾아보니 몇가지 안을 도출하게 되었다.
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
* [참고3] 한국의 양력과 중국의 양력이 다를 수 있어서 ibm 라이브러리 사용을 제외하게된 참고자료
https://blog.naver.com/birdparang/221445233118
결론.
[참고1] 자료의 버그를 수정하여 유틸로 사용
- 테스트 데이터 구성 : 천문연구원의 2023~2050 음력 공휴일(설날, 부처님오신날, 추석) 매핑자료 검색
> https://astro.kasi.re.kr/life/pageView/8
(행활천문관 > 음양력변환계산 > 특정음력일찾기 : 2023~2050 음력일자 조회 결과)
'tip' 카테고리의 다른 글
윈도우11 휴대폰과 연결 자동실행 (0) | 2023.04.13 |
---|---|
윈도우11 시작시 모바일 핫스팟 자동실행 (0) | 2023.04.13 |
IDE 방향 단축키 custom 설정 (0) | 2023.03.28 |
ecilpse git user, email 변경 (0) | 2023.03.27 |
안드로이드(갤럭시23) 변경 후 카카오톡 사진/미디어 이동 (0) | 2023.03.23 |