IT기술, 프로그래밍/Java
Java 일자와 일자 사이 윤달 확인 방법
뱅노
2019. 6. 30. 11:08
가끔 작업을 하다보면, 시작일자와 종료일자 사이에 윤달이 있는지 확인 할 필요가 있다.
윤달이 있고 없고에 따라서 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
}
앞써 이야기 했든이 로직은 간단하다.
시작일자와 종료일자를 각각 윤달 여부를 확인한다.
시작일자의 년을 가져와서 윤달이 있는 해 인지 확인하고 종료일자도 동일하다.
그리고 시작일자와 종료일자의 사이에 윤달이 있는지를 확인한다.