즐겁게 하하하 2022. 4. 21. 09:56
728x90
package test.cmmn.util;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

/**
 * <b>Description :</b>
 * <pre>
 * 날짜에 관련한 유틸 클래스 입니다.
 * </pre>
 * @version 
 */
@Component("dateUtil")
public class DateUtil {
    Calendar  calendar = null;

    /**
     * 기본생성자 입니다.
     */
    public DateUtil() {
    	calendar = Calendar.getInstance();
    	calendar.setTime(new Date());
    }

    /**
     * <pre>
     * 날짜를 설정 합니다.
     * </pre>
     * @param timeInMillis the new time in UTC milliseconds from the epoch.
     */
    public void setDate(long timeInMillis){
        calendar.setTimeInMillis(timeInMillis);
    }

    /**
     * <pre>
     * 날짜를 설정 합니다.
     * </pre>
     * @param cl 표시하고자 하는 날짜
     */
    public void setDate(Calendar cl){
        calendar = cl;
    }

    /**
     * <pre>
     * 날짜를 설정 합니다.
     * </pre>
     * @param year 년
     * @param month 월
     * @param day 일
     */
    public void setDate(int year, int month, int day){
        calendar.set(year, month - 1, day);
    }

    /**
     * <pre>
     * 년도를 얻습니다.
     * </pre>
     * @return 년도
     */
    public int getYear() {
	    return calendar.get(Calendar.YEAR);
    }

    /**
     * <pre>
     * 년도를 얻습니다.
     * </pre>
     * @return 년도
     */
    public String getYearString() {
	    return String.valueOf(calendar.get(Calendar.YEAR));
    }
    
    
    /**
     * 4자리로 된 년도를 지정된 포맷으로 변환
     * @param date      변환하기 위한 날자 4자리로 된 년도(yyyy)
     * @param param     지정된 포맷
     * @return String
     */
    public String getStringToYyyy(String date) {
        if (StringUtils.isEmpty(date) || date.length() != 8) return "";

        String rslt = "";
        String year = StringUtils.substring(date, 0, 4);
        
        rslt = year +"년 ";
        
        return rslt;
    }

    /**
     * <pre>
     * 달을 다음의 형태로 얻습니다.
     *
     * "January", "February", "March",
     * "April", "May", "June",
     * "July","August", "September",
     * "October", "November", "December"
     * </pre>
     * @return 문자형 달
     */
    public String getMonth() {
    	int m = getMonthInt();
    	String[] months = new String [] { "January", "February", "March",
    					"April", "May", "June",
    					"July", "August", "September",
    					"October", "November", "December" };
    	if (m > 12)
    	    return "Unknown to Man";

    	return months[m - 1];
    }

    /**
     * <pre>
     * 요일을 다음의 형태로 얻습니다.
     *
     * "일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"
     * </pre>
     * @return 한글 요일
     */
    public String getDay() {
    	int x = getDayOfWeek();
    	String[] days = new String[] {"일요일", "월요일", "화요일", "수요일", "목요일", "금요일", "토요일"};

    	if (x > 7)
    	    return "Unknown to Man";

	    return days[x - 1];
    }

    /**
     * <pre>
     * 달을 숫자의 형태로 얻습니다.
     * </pre>
     * @return 숫자형 달
     */
    public int getMonthInt() {
	    return 1 + calendar.get(Calendar.MONTH);
    }

    /**
     * 현재 격주를 숫자의 형태로 얻습니다.
     * @return int
     */
    public int getFortnightInt() {
    	return (calendar.get(Calendar.DATE) / 15) + 1;
    }

    /**
     * 현재 격주를 문자의 형태로 얻습니다.
     * @return String
     */
    public String getFortnightString() {
    	return String.valueOf((calendar.get(Calendar.DATE) / 15) + 1);
    }

    /**
     * <pre>
     * 날짜를 얻습니다.
     * </pre>
     * @return yyyy-m-d
     */
    public String getDate() {
	    return getYear() + "-" + getMonthInt() + "-" + getDayOfMonth();
    }

    /**
     * <pre>
     * 날짜를 얻습니다.
     * </pre>
     * @param i 특정월
     * @return yyyy-m-d
     */
    public String getDate(int i) {
		calendar.setTime(new Date());
		calendar.add(Calendar.MONTH, i);
		setDate(calendar);
	    return getYear() + "-" + getMonthInt() + "-" + getDayOfMonth();
    }

    /**
     * <pre>
     * 시간을 얻습니다.
     * </pre>
     * @return HH:mm:ss
     */
    public String getTime() {
	    return getHour() + ":" + getMinute() + ":" + getSecond();
    }

    /**
     * <pre>
     * 시간을 얻습니다.
     * </pre>
     * @return HH+sep+mm+sep+ss
     */
    public String getTime(String separator) {
	    return getHourDigit() + separator + getMinuteDigit() + separator+ getSecondDigit();
    }

    /**
     * <pre>
     * 날짜시간을 얻습니다.
     * </pre>
     * @return yyyymmddHHmmss
     */
    public String getDateTime() {
    	String dateTime = getDateOct("");
    	dateTime = dateTime + getHourDigit();
    	dateTime = dateTime + getMinuteDigit();
    	dateTime = dateTime + getSecondDigit();
	    return dateTime;
    }

    /**
     * <pre>
     * Calendar.DAY_OF_MONTH 값을 얻습니다.
     * </pre>
     * @return Calendar.DAY_OF_MONTH
     */
    public int getDayOfMonth() {
	    return calendar.get(Calendar.DAY_OF_MONTH);
    }

    /**
     * <pre>
     * Calendar.DAY_OF_YEAR 값을 얻습니다.
     * </pre>
     * @return Calendar.DAY_OF_YEAR
     */
    public int getDayOfYear() {
	    return calendar.get(Calendar.DAY_OF_YEAR);
    }

    /**
     * <pre>
     * Calendar.WEEK_OF_YEAR 값을 얻습니다.
     * </pre>
     * @return Calendar.WEEK_OF_YEAR
     */
    public int getWeekOfYear() {
	    return calendar.get(Calendar.WEEK_OF_YEAR);
    }

    /**
     * <pre>
     * Calendar.WEEK_OF_MONTH 값을 얻습니다.
     * </pre>
     * @return Calendar.WEEK_OF_MONTH
     */
    public int getWeekOfMonth() {
	    return calendar.get(Calendar.WEEK_OF_MONTH);
    }

    /**
     * <pre>
     * Calendar.DAY_OF_WEEK 값을 얻습니다.
     * </pre>
     * @return Calendar.DAY_OF_WEEK
     */
    public int getDayOfWeek() {
	    return calendar.get(Calendar.DAY_OF_WEEK);
    }

    /**
     * <pre>
     * Calendar.HOUR_OF_DAY 값을 얻습니다.
     * </pre>
     * @return Calendar.HOUR_OF_DAY
     */
    public int getHour() {
	    return calendar.get(Calendar.HOUR_OF_DAY);
    }

    /**
     * Calendar.HOUR_OF_DAY 값을 얻습니다.
     * @return 2자리 Calendar.HOUR_OF_DAY
     */
    public String getHourDigit() {
        return StringUtils.leftPad(String.valueOf(this.getHour()), 2, "0");
    }

    /**
     * <pre>
     * Calendar.MINUTE 값을 얻습니다.
     * </pre>
     * @return Calendar.MINUTE
     */
    public int getMinute() {
	    return calendar.get(Calendar.MINUTE);
    }

    /**
     * Calendar.MINUTE 값을 얻습니다.
     * @return 2자리 Calendar.MINUTE
     */
    public String getMinuteDigit() {
        return StringUtils.leftPad(String.valueOf(this.getMinute()), 2, "0");
    }

    /**
     * <pre>
     * Calendar.SECOND 값을 얻습니다.
     * </pre>
     * @return Calendar.SECOND
     */
    public int getSecond() {
	    return calendar.get(Calendar.SECOND);
    }

    /**
     * Calendar.SECOND 값을 얻습니다.
     * @return 2자리 Calendar.SECOND
     */
    public String getSecondDigit() {
        return StringUtils.leftPad(String.valueOf(this.getSecond()), 2, "0");
    }

    /**
     * <pre>
     * Calendar.ERA 값을 얻습니다.
     * </pre>
     * @return Calendar.ERA
     */
    public int getEra() {
	    return calendar.get(Calendar.ERA);
    }

    /**
     * <pre>
     * Calendar.AM_PM 값을 얻습니다.
     * </pre>
     * @return Calendar.AM_PM
     */
    public int getAMPM() {
	    return calendar.get(Calendar.AM_PM);
    }

    /**
     * 해당 월의 마지막 날을 구한다.
     * @return Calendar.DAY_OF_MONTH
     */
    public int getEndDay(){
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }

    /**
     * 회계년도를 얻습니다.
     * @return 회계년도
     */
    public int getAccountYear(){
        if (getMonthInt() < 3){
            return getYear() - 1;
        }else{
            return getYear();
        }
    }

    /**
     * <pre>
     * 회계년도를 얻습니다.
     * </pre>
     * @param year 년도
     * @param month 달
     * @return 회계년도
     */
    public int getMoneyYear(int year, int month){
        if (month < 3){
            return year - 1;
        }else{
            return year;
        }
    }

    /**
     * 주어진 월의 마지막 날을 구함.
     * @param year 년도
     * @param month 달
     * @return 마지막 날
     */
    public int getAccountDay(String year, String month){
        int yer = Integer.parseInt(year);
        int mon = Integer.parseInt(month);

        if (mon != 2) {
            if (mon == 4 || mon == 6 || mon == 9 || mon == 11){
                return 30;
            }else{
                return 31;
            }
        } else {
            int dayNum =0;
            // 2월인 경우 윤년 체크
            if ((yer%4) != 0) dayNum = 28;
            else if ((yer%100) != 0) dayNum = 29;
            else if ((yer%400) != 0) dayNum = 28;
            else dayNum = 29;

            return dayNum;
        }
    }

    /**
     * 8자리로 된 날자를 지정된 포맷으로 변환
     * @param date
     * @return String
     */
    public String getStringToDate(String date) {
        return getStringToDate(date, "년월일");
    }

    /**
     * 8자리로 된 날자를 지정된 포맷으로 변환
     * @param date      변환하기 위한 날자 8자리로 된 날자(yyyyMMdd)
     * @param param     지정된 포맷
     * @return String
     */
    public String getStringToDate(String date, String param) {
        if (StringUtils.isEmpty(date) || date.length() != 8) return "";

        String format = param;
        if (StringUtils.isEmpty(format)) {
            format = "년월일";
        }

        StringBuffer sb = new StringBuffer("");

        String year = StringUtils.substring(date, 0, 4);
        String month = StringUtils.substring(date, 4, 6);
        String day = StringUtils.substring(date, 6, 8);

        if (format.length() == 3) {
            sb.append(year).append(format.substring(0, 1))
                    .append(month).append(format.substring(1, 2))
                    .append(day).append(format.substring(2, 3));
        } else {
            sb.append(year).append(format).append(month).append(format).append(day);
        }
        return sb.toString();
    }

    /**
     * 8자리로 된 날자를 지정된 포맷으로 변환(스페이스 구분)
     * @param date      변환하기 위한 날자 8자리로 된 날자(yyyyMMdd)
     * @param param     지정된 포맷
     * @return String
     */
    public String getStringToDateSpace(String date) {
        if (StringUtils.isEmpty(date) || date.length() != 8) return "";

        String rslt = "";
        String year = StringUtils.substring(date, 0, 4);
        String month = StringUtils.substring(date, 4, 6);
        String day = StringUtils.substring(date, 6, 8);

        int m = Integer.parseInt(month);
        int d = Integer.parseInt(day);
        
        rslt = year +"년 "+ m +"월 "+ d +"일";
        
        return rslt;
    }

    /**
     * 현재 년도를 mode에 따라 &lt;option&gt;문으로 만들어 return
     * @param mode  year  년도 option 문
     *              month 월 opiton 문
     *              day   일 option 문
     * @return String
     */
    public String getDateOptions(String mode) {
        int year = this.getYear();
        int month = this.getMonthInt();
        int day = this.getDayOfMonth();
        int endOfMonth = this.getEndDay();

        if (StringUtils.equals(mode, "year")) {
            return this.getYearOptions(year);
        } else if (StringUtils.equals(mode, "month")) {
            return this.getMonthOptions(month);
        } else if (StringUtils.equals(mode, "day")) {
            return this.getDayOptions(endOfMonth, day);
        } else {
            return "";
        }
    }

    /**
     * 특정 년도를 mode에 따라 &lt;option&gt;문으로 만들어 return
     * @param date  특정 날자  : yyyyMMdd 형식 이어야 함
     * @param mode  year  년도 option 문
     *              month 월 opiton 문
     *              day   일 option 문
     * @return String
     */
    public String getDateOptions (String date, String mode) {
        if (date == null || date.length() != 8) return "";

        int year = Integer.parseInt(StringUtils.substring(date, 0, 4));
        int month = Integer.parseInt(StringUtils.substring(date, 4, 6));
        int day = Integer.parseInt(StringUtils.substring(date, 6, 8));

        if (StringUtils.equals(mode, "year")) {
            return this.getYearOptions(year);
        } else if (StringUtils.equals(mode, "month")) {
            return this.getMonthOptions(month);
        } else if (StringUtils.equals(mode, "day")) {
            return this.getDayOptions(year, month, day);
        } else {
            return "";
        }
    }

    /**
     * 현재년도를 &lt;option&gt;문으로 만들어 return
     * @return String
     */
    public String getYearOptions() {
        return this.getYearOptions(0, 3, this.getYear());
    }

    /**
     * 현재년도를 &lt;option&gt;문으로 만들어 return
     * @param minValue  현재년도 기준으로 -값, 현재 년도부터 시작일 경우  0 이다
     * @param maxValue  현재년도 기준으로 + 값
     * @return String
     */
    public String getYearOptions(int minValue, int maxValue) {
        return this.getYearOptions(minValue, maxValue, this.getYear());
    }

    /**
     * 특정년도를 &lt;option&gt;문으로 만들어 return
     * @param year  특정 년도
     * @return String
     */
    public String getYearOptions(int year) {
        return this.getYearOptions(0, 3, year);
    }

    /**
     * 특정년도를 &lt;option&gt;문으로 만들어 return
     * @param minValue  특정년도 기준으로 - 값, 현재 년도부터 시작일 경우  0 이다
     * @param maxValue  특정년도 기준으로 + 값
     * @param selectedYear  선택되는 년도
     * @return  &lt;options&gt;
     */
    public String getYearOptions(int minValue, int maxValue, int pSelectedYear) {
    	int selectedYear = pSelectedYear;
        if (selectedYear == 0) selectedYear = this.getYear();

        StringBuffer yearOptions = new StringBuffer("");

        int minYear = minValue + this.getYear();
        int maxYear = maxValue + this.getYear();

        for (int i=minYear; i <= maxYear; i++) {
            yearOptions.append("<option value='").append(String.valueOf(i)).append("'");
            if (i == selectedYear) {
                yearOptions.append(" selected='selected'");
            }
            yearOptions.append(">").append(String.valueOf(i)).append(" 년").append("</option>");
            yearOptions.append("\n");
        }
        return yearOptions.toString();
    }

    /**
     * 현재 월을  &lt;option&gt;문으로 만들어 return
     * @return String
     */
    public String getMonthOptions() {
        return getMonthOptions(this.getMonthInt());
    }

    /**
     * 특정 월을  &lt;option&gt;문으로 만들어 return
     * @param selectedMonth  선택되는 월
     * @return String
     */
    public String getMonthOptions(int pSelectedMonth) {
    	int selectedMonth = pSelectedMonth;
        if (selectedMonth == 0) selectedMonth = this.getMonthInt();

        StringBuffer monthOptions = new StringBuffer("");
        for (int i=1; i <= 12; i++) {
            monthOptions.append("<option value='").append(StringUtils.leftPad(String.valueOf(i), 2, "0")).append("'");
            if (i == selectedMonth) {
                monthOptions.append(" selected='selected'");
            }
            monthOptions.append(">").append(StringUtils.leftPad(String.valueOf(i), 2, "0")).append("</option>");
            monthOptions.append("\n");
        }
        return monthOptions.toString();
    }

    /**
     * 현재 격주를  &lt;option&gt;문으로 만들어 return
     * @return String
     */
    public String getFortnightOptions() {
	    int selectedWeek = this.getFortnightInt();

        StringBuffer weekOptions = new StringBuffer("");
        for (int i=1; i<3; i++) {
            weekOptions.append("<option value='").append(String.valueOf(i)).append("'");
            if (i == selectedWeek) {
                weekOptions.append(" selected='selected'");
            }
            weekOptions.append(">").append(String.valueOf(i)).append("</option>");
            weekOptions.append("\n");
        }
        return weekOptions.toString();
    }

    /**
     * 현재 4주를  &lt;option&gt;문으로 만들어 return
     * @return String
     */
    public String getWeekendOptions() {
	    int selectedWeek = 1;	//this.getFortnightInt();

        StringBuffer weekOptions = new StringBuffer("");
        for (int i=1; i<5; i++) {
            weekOptions.append("<option value='").append(String.valueOf(i)).append("'");
            if (i == selectedWeek) {
                weekOptions.append(" selected='selected'");
            }
            weekOptions.append(">").append(String.valueOf(i)).append("</option>");
            weekOptions.append("\n");
        }
        return weekOptions.toString();
    }

    /**
     * 현재 일을  &lt;option&gt;문으로 만들어 return
     * @param selectedDay  선택되는 일
     * @return String
     */
    public String getDayOptions(int selectedDay) {
        int endOfMonth = this.getEndDay();
        return getDayOptions(endOfMonth, selectedDay);
    }

    /**
     * 특정 일을  &lt;option&gt;문으로 만들어 return
     * @param year  특정일이 속한 년도
     * @param month 특정일이 속한 월
     * @param selectedDay  선택되는 일
     * @return String
     */
    public String getDayOptions(int pYear, int pMonth, int pSelectedDay) {
    	int year=pYear;
    	int month=pMonth;
    	int selectedDay = pSelectedDay;

        if (year == 0) year = this.getYear();
        if (month == 0) month = this.getMonthInt();
        if (selectedDay == 0) selectedDay = this.getDayOfMonth();

        // 해당월의 마지막일
        int endOfMonth = this.getAccountDay(String.valueOf(year), String.valueOf(month));
        return getDayOptions(endOfMonth, selectedDay);
    }

    /**
     * 특정 일을  &lt;option&gt;문으로 만들어 return
     * @param endOfMonth    특정일이 속한 마지막  일
     * @param selectedDay  선택되는 일
     * @return String
     */
    public String getDayOptions(int endOfMonth, int pSelectedDay) {
    	int selectedDay = pSelectedDay;
        if (selectedDay == 0) selectedDay = this.getDayOfMonth();

        StringBuffer dayOptions = new StringBuffer("");
        for (int i=1; i <= endOfMonth; i++) {
            dayOptions.append("<option value='").append(StringUtils.leftPad(String.valueOf(i), 2, "0")).append("'");
            if (i == selectedDay) {
                dayOptions.append(" selected='selected'");
            }
            dayOptions.append(">").append(StringUtils.leftPad(String.valueOf(i), 2, "0")).append("</option>");
            dayOptions.append("\n");
        }
        return dayOptions.toString();
    }

    /**
     * 월을 2자리 String으로 만들어 return
     * @return 2자리 월
     */
    public String getMonthString() {
        return StringUtils.leftPad(String.valueOf(this.getMonthInt()), 2, "0");
    }

    /**
     * 일을 2자리 String으로 만들어 return
     * @return 2자리 일
     */
    public String getDayString() {
        return StringUtils.leftPad(String.valueOf(this.getDayOfMonth()), 2, "0");
    }

    /**
     * 날자를 8자리 String 검색조건으로  만들어 return
     * @param locale 언어
     * @param date 날짜
     * @param separator 구분자
     * @return 8자리 날자
     */
    public String getSearchDate(String locale, String pDate, String separator) {
    	String date = pDate;
    	String rslt = "";
    	date = StringUtil.stringCheck(date);
    	if(!date.equals("")){
        	String[] arr = date.split(separator);
	    	if(locale.equals("en_US")){
	    		rslt = arr[2] + arr[1] + arr[0];
	    	}else if(locale.equals("fr_MA")){
	    		rslt = arr[2] + arr[1] + arr[0];
	    	}else{
	    		rslt = arr[0] + arr[1] + arr[2];
	    	}
    	}
    	return rslt;
    }

    /**
     * 날자를 8자리 String 으로 만들어 return
     * @param separator 구분자
     * @return 8자리 날자
     */
    public String getDateOct(String separator) {
        return this.getYear() + separator + this.getMonthString() + separator + this.getDayString();
    }

    /**
     * 날자를 8자리 String 으로 만들어 return
     * @param separator 구분자
     * @return 8자리 날자
     */
    public String getFrDateOct(String separator) {
        return this.getDayString() + separator + this.getMonthString() + separator + this.getYear();
    }

    /**
     * 날자를 8자리 String 으로 만들어 return
     * @param locale 언어
     * @param separator 구분자
     * @return 8자리 날자
     */
    public String getDateOct(String locale, String separator) {
    	String rslt = "";
    	if(locale.equals("ko_KR")){
    		rslt = this.getYear() +separator+ this.getMonthString() +separator+ this.getDayString();
    	}else{
    		rslt = this.getDayString() +separator+ this.getMonthString() +separator+ this.getYear();
    	}
        return rslt;
    }

    /**
     * 날자를 8자리 String 으로 만들어 return
     * @param separator 구분자
     * @param i 특정월
     * @return 8자리 날자
     */
    public String getDateOct(String separator, int i) {
		calendar.setTime(new Date());
		calendar.add(Calendar.MONTH, i);
		setDate(calendar);
        return this.getYear() + separator + this.getMonthString() + separator + this.getDayString();
    }

    /**
     * 날자를 8자리 String 으로 만들어 return
     * @param locale 언어
     * @param separator 구분자
     * @param i 특정월
     * @return 8자리 날자
     */
    public String getDateOct(String locale, String separator, int i) {
		calendar.setTime(new Date());
		calendar.add(Calendar.MONTH, i);
		setDate(calendar);
    	String rslt = "";
    	if(locale.equals("en_US")){
    		rslt = this.getDayString() +separator+ this.getMonthString() +separator+ this.getYear();
    	}else if(locale.equals("fr_MA")){
    		rslt = this.getDayString() +separator+ this.getMonthString() +separator+ this.getYear();
    	}else{
    		rslt = this.getYear() +separator+ this.getMonthString() +separator+ this.getDayString();
    	}
        return rslt;
    }

    public String compareDate(String sDate, String eDate, String separate){

    	String result = "Y";
    	String currentDate = getDate();	//오늘 날짜	2008-01-01  2008/01/01

    	String [] sArr = StringUtils.split(sDate,separate);		// 시작날짜 배열 "-"
    	String [] eArr = StringUtils.split(eDate,separate);		// 종료일자 배열
    	String [] cArr = StringUtils.split(currentDate,separate);	//현재날짜 배열

    	for(int i=0; i< sArr.length; i++) {
    		if(Integer.parseInt(sArr[0]) > Integer.parseInt(cArr[0])) {
    			result = "N";
    			break;
    		}

    		if(Integer.parseInt(sArr[1]) > Integer.parseInt(cArr[1])) {
    			result = "N";
    			break;
    		}

    		if(Integer.parseInt(sArr[2]) > Integer.parseInt(cArr[2])) {
    			result = "N";
    			break;
    		}
    	}

    	for(int i=0; i< eArr.length; i++) {
    		if(Integer.parseInt(eArr[0]) < Integer.parseInt(cArr[0])) {
    			result = "N";
    			break;
    		}

    		if(Integer.parseInt(eArr[1]) < Integer.parseInt(cArr[1])) {
    			result = "N";
    			break;
    		}

    		if(Integer.parseInt(eArr[2]) < Integer.parseInt(cArr[2])) {
    			result = "N";
    			break;
    		}
    	}

    	return result;
    }



    /**
     * <pre>
     * 순기를 얻습니다.
     * </pre>
     * @return 순기
     */
    public int getTenDays() {
	    return (calendar.get(Calendar.DATE) / 10) + 1;
    }

    /**
     * <pre>
     * 순기를 얻습니다.
     * </pre>
     * @return 순기
     */
    public String getTenDaysString() {
	    return String.valueOf((calendar.get(Calendar.DATE) / 10) + 1);
    }

    /**
     * <pre>
     * 순기를 얻습니다.
     * </pre>
     * @return 순기
     */
    public String getTenDaysText() {
    	String tenDaysText = "";
    	int tenDays = (calendar.get(Calendar.DATE) / 10) + 1;
    	switch(tenDays){
			case 1:
				tenDaysText = "1/3";
				break;
			case 2:
				tenDaysText = "2/3";
				break;
			case 3:
				tenDaysText = "3/3";
				break;
			default:
				tenDaysText = "";
				break;
    	}
	    return tenDaysText;
    }

    /**
     * <pre>
     * 격월를 얻습니다.
     * </pre>
     * @return 격월
     */
    public int getBimonthly() {
	    return (calendar.get(Calendar.MONTH) / 2) + 1;
    }

    /**
     * <pre>
     * 격월를 얻습니다.
     * </pre>
     * @return 격월
     */
    public String getBimonthlyString() {
	    return String.valueOf((calendar.get(Calendar.MONTH) / 2) + 1);
    }

    /**
     * <pre>
     * 격월를 얻습니다.
     * </pre>
     * @return 격월
     */
    public String getBimonthlyText() {
    	String bimonthlyText = "";
    	int bimonthly = (calendar.get(Calendar.MONTH) / 2) + 1;
    	switch(bimonthly){
			case 1:
				bimonthlyText = "1/6";
				break;
			case 2:
				bimonthlyText = "2/6";
				break;
			case 3:
				bimonthlyText = "3/6";
				break;
			case 4:
				bimonthlyText = "4/6";
				break;
			case 5:
				bimonthlyText = "5/6";
				break;
			case 6:
				bimonthlyText = "6/6";
				break;
			default:
				bimonthlyText = "";
				break;
    	}
	    return bimonthlyText;
    }

    /**
     * <pre>
     * 분기를 얻습니다.
     * </pre>
     * @return 분기
     */
    public int getQuarter() {
	    return (calendar.get(Calendar.MONTH) / 3) + 1;
    }

    /**
     * <pre>
     * 분기를 얻습니다.
     * </pre>
     * @return 분기
     */
    public String getQuarterString() {
	    return String.valueOf((calendar.get(Calendar.MONTH) / 3) + 1);
    }

    /**
     * <pre>
     * 분기를 얻습니다.
     * </pre>
     * @return 분기
     */
    public String getQuarterText() {
    	String quarterText = "";
    	int quarter = (calendar.get(Calendar.MONTH) / 3) + 1;
    	switch(quarter){
			case 1:
				quarterText = "1/4";
				break;
			case 2:
				quarterText = "2/4";
				break;
			case 3:
				quarterText = "3/4";
				break;
			case 4:
				quarterText = "4/4";
				break;
			default:
				quarterText = "";
				break;
    	}
	    return quarterText;
    }

    /**
     * <pre>
     * 반기를 얻습니다.
     * </pre>
     * @return 반기
     */
    public int getHalf() {
	    return (calendar.get(Calendar.MONTH) / 6) + 1;
    }

    /**
     * <pre>
     * 반기를 얻습니다.
     * </pre>
     * @return 반기
     */
    public String getHalfString() {
	    return String.valueOf((calendar.get(Calendar.MONTH) / 6) + 1);
    }

    /**
     * <pre>
     * 반기를 얻습니다.
     * </pre>
     * @return 반기
     */
    public String getHalfText() {
    	String halfText = "";
    	int half = (calendar.get(Calendar.MONTH) / 6) + 1;
    	switch(half){
			case 1:
				halfText = "1/2";
				break;
			case 2:
				halfText = "2/2";
				break;
			default:
				halfText = "";
				break;
    	}
	    return halfText;
    }

    /**
     * <pre>
     * 월 목록을 얻습니다.
     * </pre>
     * @return 월 목록
     */
    public List getMonthList() {
    	List list = new ArrayList();
    	String str = "";
    	for(int i=1; i<13; i++){
    		if(i<10)	str = "0" + i;
    		else		str = "" + i;
    		list.add(str);
    	}
	    return list;
    }

    /**
     * d 가 a b 사이에 있는 날짜이면 true 아니면 false
     * @param d
     * @param a
     * @param b
     * @return
     */
    public static boolean isBetweenDate(Date d, Date a, Date b) {
        if( d.compareTo(a) >= 0 && d.compareTo(b) <=0 ) {
            return true;
        }else {
            return false;
        }
    }
}
728x90