Database에 휴일을 집어넣고 일정을 표시해줄때 공휴일을 표시해줄 경우가 있다.
양력으로 되어있는 일반 공휴일은 처리하기가 간단한데 음력으로 되어있는 공휴일 (예를 들어 설날 또는 추석)은
음력 데이터가 있어야 한다.
그래서 인터넷에 있는 음력데이터를 이용하여 디비에 넣고 확인을 해보니 음력 날짜가 맞지 않다.
그래서 구글에서 검색해보니 java를 이용하여 양력과 음력을 변환할 수 있는 소스가 존재했다.
아래는 소스이다.
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import com.ibm.icu.util.ChineseCalendar; public class LunarToSolarTest { public static String getDateByString(Date date) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(date); } /** * 음력날짜를 양력날짜로 변환 * @param 음력날짜 (yyyyMMdd) * @return 양력날짜 (yyyyMMdd) */ private static String convertLunarToSolar(String date) { ChineseCalendar cc = new ChineseCalendar(); Calendar cal = Calendar.getInstance(); cc.set(ChineseCalendar.EXTENDED_YEAR, Integer.parseInt(date.substring(0, 4)) + 2637); cc.set(ChineseCalendar.MONTH, Integer.parseInt(date.substring(4, 6)) - 1); cc.set(ChineseCalendar.DAY_OF_MONTH, Integer.parseInt(date.substring(6))); cal.setTimeInMillis(cc.getTimeInMillis()); return getDateByString(cal.getTime());icu download : http://site.icu-project.org/download} /** * 양력날짜를 음력날짜로 변환 * @param 양력날짜 (yyyyMMdd) * @return 음력날짜 (yyyyMMdd) */ private static String converSolarToLunar(String date) { ChineseCalendar cc = new ChineseCalendar(); Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, Integer.parseInt(date.substring(0, 4))); cal.set(Calendar.MONTH, Integer.parseInt(date.substring(4, 6)) - 1); cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(date.substring(6))); cc.setTimeInMillis(cal.getTimeInMillis()); int y = cc.get(ChineseCalendar.EXTENDED_YEAR) - 2637; int m = cc.get(ChineseCalendar.MONTH) + 1; int d = cc.get(ChineseCalendar.DAY_OF_MONTH); StringBuffer ret = new StringBuffer(); ret.append(String.format("%04d", y)).append("-"); ret.append(String.format("%02d", m)).append("-"); ret.append(String.format("%02d", d)); return ret.toString(); } public static void main(String[] args) { System.out.println("음력 2015년 12월 29일을 양력으로 변환하면 => " + convertLunarToSolar("20151229")); System.out.println("양력 2016년 2월 7일을 음력으로 변환하면 =>\t " + converSolarToLunar("20160207")); } }
첨부파일
참고한 사이트 : http://kimstar.kr/6881/
'컴퓨터관련' 카테고리의 다른 글
Java로 달력을 만들어 봅시다. (1) | 2016.01.27 |
---|---|
Java를 이용하여 2016년부터 2030년까지 공휴일 데이터 조회해보자 (0) | 2016.01.26 |
Oracle timestamp 값을 date 형식으로 변환하기 (0) | 2016.01.21 |
Linux - netstat 명령어 사용법 (0) | 2016.01.20 |
Linux - 디렉토리만 출력 or 디렉토리 제외하고 출력 (0) | 2016.01.20 |