반응형
자바에서 날짜를 양력에서 음력으로 변환하는것에 대한 내용이다. 다른 훌륭한 블로거들의 글을 참고하여 변환하는 방법을 작성하였다. (오래된지라 참고했던 블로거의 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) ; } }
해당 소스를 본인의 목적에 맞겨 절절하게 수정하거나 참고하여 공통으로 사용하는 메소드로 만들어 이용하면 된다.
'Language > Java / JSP' 카테고리의 다른 글
[Java] 공휴일 체크하기 - 음력, 양력 (1) | 2014.09.06 |
---|---|
[JSP] checkbox 값 받기와 전송순서에 대하여 (3) | 2014.09.04 |
[Java] 문자열 포함여부 확인(검색)방법 - contains, indexOf, matches (5) | 2014.09.02 |
[JSP] 썸네일 이미지 생성하기(이미지 리사이즈 저장) (0) | 2014.08.30 |
[JSP] 한글 깨짐 처리방법과 문자 인코딩 (15) | 2014.08.29 |