본문 바로가기

소프트웨어/Java

D-Day 계산

구글링을 하다보면 이것저것 예제가 많은데, 우리가 일상적으로 생각하는 디데이를 표현하고자 할때는 무리가 좀 있당. 특히 시간단위에서 오차가 나는 경우가 꽤나 있는데 다음과 같이 하면 좀 더 깔끔하고 정확한 D-Day가 구현되는 것 같아서 남겨둔당.

 

Calendar c = Calendar.getInstance(); // 비교할 시간
c.setTime("비교시간");
c.clear(Calendar.HOUR);
c.clear(Calendar.MINUTE);
c.clear(Calendar.SECOND);
c.clear(Calendar.MILLISECOND); // 시간, 분, 초, 밀리초 초기화

Calendar c2 = Calendar.getInstance(); // 현재 시간
c2.clear(Calendar.HOUR); 
c2.clear(Calendar.MINUTE);
c2.clear(Calendar.SECOND);
c2.clear(Calendar.MILLISECOND); // 시간, 분, 초, 밀리초 초기화
long dDayDiff = c2.getTimeInMillis() - c.getTimeInMillis();
int day = (int)(Math.floor(TimeUnit.HOURS.convert(dDayDiff, TimeUnit.MILLISECONDS) / 24f));