공휴일 달력표시정보 구성이 필요해서 음력 날짜를 양력 날짜로 변환하는 작업이 필요했다.
인터넷을 찾아보니 몇가지 안을 도출하게 되었다.
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
'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 |