반응형
자바에서 날짜를 양력에서 음력으로 변환하는것에 대한 내용이다. 다른 훌륭한 블로거들의 글을 참고하여 변환하는 방법을 작성하였다. (오래된지라 참고했던 블로거의 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 |
icu4j-4_8_1_1.jar