티스토리 뷰

가끔 작업을 하다보면, 시작일자와 종료일자 사이에 윤달이 있는지 확인 할 필요가 있다.

윤달이 있고 없고에 따라서 1년 365일 366일이 될 수도 있기 때문이다.

기본적인 수행 로직은 간단하다.

필요할 때 언제든지 꺼내 쓸 수 있도록 하자.

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");

String toDateStr = "20190329";
String fromDateStr = "20200329";

try {
	Date toDate = format.parse(toDateStr);
	Date fromDate = format.parse(fromDateStr);

    if(0 == Integer.parseInt(toDateStr.substring(0, 4)) % 4){
        /* ▲ 시작일자의 년을 가지고 와서 4로 나눴을 때 나머지 값을 확인한다.
        * 윤달은 4년마다 돌아온다. 따라서 나머지 값이 0일 경우가 윤달이 있는 해 이다.
        */
        Date compDate = format.parse(toDateStr.substring(0, 4) + "0229");
        if(compDate.getTime() >= toDate.getTime()){
          System.out.println("toDate - 윤달이 존재합니다.");
        }
    } else if(0 == Integer.parseInt(fromDateStr.substring(0, 4)) % 4){
        Date compDate = format.parse(fromDateStr.substring(0, 4) + "0229");
        if(compDate.getTime() <= fromDate.getTime()){
          System.out.println("from - 윤달이 존재합니다.");
        }
    } else {
    	System.out.println("윤달이 존재하지 않습니다.");
    }

} catch (Exception e) {
	// TODO: handle exception
}

앞써 이야기 했든이 로직은 간단하다.

시작일자와 종료일자를 각각 윤달 여부를 확인한다.

시작일자의 년을 가져와서 윤달이 있는 해 인지 확인하고 종료일자도 동일하다.

그리고 시작일자와 종료일자의 사이에 윤달이 있는지를 확인한다.

'IT기술, 프로그래밍 > Java' 카테고리의 다른 글

Java 일, 월, 년 차이 계산 방법  (0) 2019.06.29
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함