Java 날짜 양력, 음력 변환하기
프로젝트 진행중 현재 날짜를 음력일떄, 양력일때로 각각 검색하는 부분이 있었다.
Util 클래스로 만들어서 사용하면 될듯하다.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import com.ibm.icu.util.ChineseCalendar;
public class ChineseCalendarUtil {
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());
}
/**
* 양력날짜를 음력날짜로 변환
* @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();
}
}
Leave a comment