안녕하세요. 제임스 입니다.
자바에서 D-Day 구하는 방법에 대해 알아 보겠습니다.
D-Day 란 오늘로 부터 특정 일자까지 남은 기간을 의미합니다.
즉, 오늘과 특정 지정일의 차를 의미 하는 것입니다.
앞서 두 날자 간 차를 구하는 방법에 대해 포스팅 했었습니다.
Calendar.getTimeInMlls() 두 날자 간 차 구하기 포스팅 보러 가기 ( http://jamesdreaming.tistory.com/103 )
이를 이용하여 D-Day 구하는 코드를 작성해 보겠습니다.
두 날자 간 차를 구하기 위해서는 Calendar Class 의 getTimeInMills() 함수를 이용하여 천분의 1초 단위까지 계산을 합니다.
오늘 날자와 D-Day 날자 선언을 합니다.
1 2 | Calendar today = Calendar.getInstance(); Calendar d_day = Calendar.getInstance(); | cs |
d_day 를 2018년 8월 19일로 설정해 보겠습니다.
1 | d_day.set(2018, Calendar.AUGUST, 19); | cs |
두 날자를 getTimeInMills() 함수를 이용하여 날자정보를 가져 오겠습니다.
이때 천분의 1초단위 값이기 때문에 24시간 * 60분 * 60초 * 1000 한 값(하루의 밀리세컨 값)으로 나눠서 일단위 값을 리턴 받습니다.
1 2 | long l_dday = dday.getTimeInMillis() / (24*60*60*1000); long l_today = today.getTimeInMillis() / (24*60*60*1000); | cs |
이제 이 두값의 차를 구해 보겠습니다.
오늘 날자로 부터 남은 기간이기 때문에 큰 날자에서 빼지 않고 작은 날자 (오늘날자) 에서 빼는 것으로 하겠습니다.
1 | long substract = l_today - l_dday; | cs |
오늘 날자 (2018.1.29) 로 부터 8월 19일 까지 D-Day 결과 값은 -202 가 나옵니다.
제대로 나온 값일 까요?
검증 하는 방법은 앞선 포스팅 ( 날자 계산하기 - 날자 더하기 / 빼기 포스팅 보러가기 )에서 다뤘습니다.
다시 한번 해볼까요?
1 2 3 4 5 6 7 8 | SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Calendar targetDate = Calendar.getInstance(); targetDate.set(2018, Calendar.AUGUST, 19); targetDate.add(Calendar.DAY_OF_MONTH, -202); System.out.println("ret = "+sdf.format(targetDate.getTime())); | cs |
결과는 아래와 같이 나옵니다.
ret = 2018/01/29
테스트 진행한 당일 날자가 제대로 나왔습니다.
간단하죠? ^^
D-Day 구하는 코드를 인자 값을 받을 수 있는 함수 형태로 작성하고 main() 함수에 호출 하는 예제로 풀로 작성 해 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public static int getDDay(int _year, int _month, int _day){ try { Calendar today = Calendar.getInstance(); Calendar d_day = Calendar.getInstance(); d_day.set(_year, _month, _day); long l_dday = d_day.getTimeInMillis() / (24*60*60*1000); long l_today = today.getTimeInMillis() / (24*60*60*1000); long substract = l_today - l_dday; return (int)substract; } catch (Exception e) { return -1; } } public static void main(String[] args) { System.out.println("8월 19일까지 D-Day = "+getDDay(2018, Calendar.AUGUST, 19)); } | cs |
▼ 도움이 되셨다면 로그인이 필요 없는 ▼
▼ 하트 클릭 한번 부탁 드립니다 ▼
감사합니다 :D
'Java' 카테고리의 다른 글
[ 자바 코딩 ] Java Number - xxxValue() 함수 모음 (476) | 2018.03.21 |
---|---|
[ 자바 코딩 ] Java Integer.parseInt (464) | 2018.03.06 |
[ 자바 코딩 ] Enhanced For Loop (향상된 For 문) (1811) | 2018.01.16 |
[ 자바 코딩 ] 두 날짜 간 차이 구하기 Calendar.getTimeInMills() (1187) | 2018.01.12 |
[ 자바 코딩 ] 날짜 계산하기 (1548) | 2018.01.11 |