Language/Java / JSP
[Java] 날짜 양력 -> 음력 변환 방법
과일가게 개발자
2014. 9. 3. 06:30
반응형
자바에서 날짜를 양력에서 음력으로 변환하는것에 대한 내용이다. 다른 훌륭한 블로거들의 글을 참고하여 변환하는 방법을 작성하였다. (오래된지라 참고했던 블로거의 URL이 어디인지 기억이 안난다 ;)
자바에서는 기본적으로 날짜 관련된 객체로 calendar 를 이용한다.
하지만 프로그래밍 언어라는게 외국에서 개발되어 우리나라나 중국에서 사용하는 음력 날짜는 지원하지 않는다.
하지만 ibm에서 icu 라는 라이브러리를 만들어 배포하고 있어, 해당 라이브러리에 chianCalendar를 이용하면 음력 날짜를 사용할 수 있다.
[icu 라이브러리 다운]
|
아래 소스는 2014-08-30 양력 날짜에 해당하는 음력 날짜를 콘솔에 출력하는 예제이다.
import com.ibm.icu.util.Calendar; import com.ibm.icu.util.ChineseCalendar; public class ChinaDate { public static void main(String[] args) { String toDay = "2014-08-30" ; ChineseCalendar chinaCal = new ChineseCalendar(); Calendar cal = Calendar.getInstance() ; cal.set(Calendar.YEAR, Integer.parseInt(toDay.substring(0, 4))); cal.set(Calendar.MONTH, Integer.parseInt(toDay.substring(5, 7)) - 1); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(toDay.substring(8,10))); chinaCal.setTimeInMillis(cal.getTimeInMillis()); int chinaYY = chinaCal.get(ChineseCalendar.EXTENDED_YEAR) - 2637 ; int chinaMM = chinaCal.get(ChineseCalendar.MONTH) + 1; int chinaDD = chinaCal.get(ChineseCalendar.DAY_OF_MONTH); String chinaDate = "" ; // 음력 날짜 chinaDate += chinaYY ; // 년 chinaDate += "-" ; // 연도 구분자 if(chinaMM < 10) // 월 chinaDate += "0" + Integer.toString(chinaMM) ; else chinaDate += Integer.toString(chinaMM) ; chinaDate += "-" ; // 날짜 구분자 if(chinaDD < 10) // 일 chinaDate += "0" + Integer.toString(chinaDD) ; else chinaDate += Integer.toString(chinaDD) ; System.out.println(chinaDate) ; } }
해당 소스를 본인의 목적에 맞겨 절절하게 수정하거나 참고하여 공통으로 사용하는 메소드로 만들어 이용하면 된다.