package me.ji5.utils;
import com.ibm.icu.util.ChineseCalendar;
import java.util.Calendar;
import me.ji5.data.LunarCalendar;
/**
* Created by ohjongin on 14. 1. 21.
*/
public class IcuCalendarUtil {
/**
* Get lunar date with Calendar class from solar date
*
* @param year
* @param month Janunary is '1' although January is '0' at Calendar class
* @param day
*
* @return A new instance of Calendar.
*/
public static Calendar getLunarCalendar(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, day);
return getLunarCalendar(cal);
}
/**
* Get lunar date with Calendar class from solar date
*
* @param cal
*
* @return A new instance of Calendar.
*/
public static Calendar getLunarCalendar(Calendar cal) {
Calendar lunar_cal = Calendar.getInstance();
LunarCalendar lc = new LunarCalendar();
ChineseCalendar cc = lc.toLunar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
int lunar_year = LunarCalendar.getYear(cc);
int lunar_month = LunarCalendar.getMonth(cc);
int lunar_day = LunarCalendar.getDay(cc);
lunar_cal.set(lunar_year, lunar_month - 1, lunar_day);
return lunar_cal;
}
/**
* Get solar date with Calendar class from lunar date
*
* @param year
* @param month Janunary is '1' although January is '0' at Calendar class
* @param day
*
* @return A new instance of Calendar.
*/
public static Calendar getCalendarFromLunar(int year, int month, int day) {
Calendar cal = Calendar.getInstance();
cal.set(year, month - 1, day);
return getCalendarFromLunar(cal);
}
/**
* Get solar date with Calendar class from lunar date
*
* @param cal
*
* @return A new instance of Calendar.
*/
public static Calendar getCalendarFromLunar(Calendar cal) {
com.ibm.icu.util.Calendar this_year_lunar = (new LunarCalendar()).fromLunar(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH) + 1, cal.get(Calendar.DAY_OF_MONTH));
Calendar this_year_cal = Calendar.getInstance();
this_year_cal.set(LunarCalendar.getYear(this_year_lunar), LunarCalendar.getMonth(this_year_lunar) - 1, LunarCalendar.getDay(this_year_lunar));
return this_year_cal;
}
}