티스토리 뷰

Android/안드로이드 D-day 구하는법(날짜 계산 하는법)

안녕하세요. 오늘은 자바에서, 두날자의 차이를 계산하는 방법을 포스팅 하도록할게요~


밑의 함수를 보시면됩니다~

public int countdday(int myear, int mmonth, int mday) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

Calendar todaCal = Calendar.getInstance(); //오늘날자 가져오기
Calendar ddayCal = Calendar.getInstance(); //오늘날자를 가져와 변경시킴

mmonth -= 1; // 받아온날자에서 -1을 해줘야함.
ddayCal.set(myear,mmonth,mday);// D-day의 날짜를 입력
Log.e("테스트",simpleDateFormat.format(todaCal.getTime()) + "");
Log.e("테스트",simpleDateFormat.format(ddayCal.getTime()) + "");

long today = todaCal.getTimeInMillis()/86400000; //->(24 * 60 * 60 * 1000) 24시간 60분 60초 * (ms초->초 변환 1000)
long dday = ddayCal.getTimeInMillis()/86400000;
long count = dday - today; // 오늘 날짜에서 dday 날짜를 빼주게 됩니다.
return (int) count;
}
catch (Exception e)
{
e.printStackTrace();
return -1;
}
}

Log.e("테스트",dateUtil.countdate(2017,10,25) + "");

 E/테스트: 2017-07-05

 E/테스트: 2017-10-25

 E/테스트: 113

위의 결과값으로 인한 테스트 값입니다.


※ 중요한 부분을 짚어드리자면


1. ddayCal.set  이부분에서 날자를 집어넣어주시지 않으신다면 안됩니다 : ) 

그리고 날짜를 Calendar 에서 Month 는 0부터 시작되기떄문에 꼭 -1 를 해주셔야되요!!


2. 86400000 -> 현재 getTimeInMillis -> 를 사용하면 1970년1월1일 이후 시간을 Ms 단위로 보내주게됩니다.

그래서 저희는 일(Day) 를 구하기위해서 곱해주셔야겟죠?? 

1000 ( Ms -> 초 ) 단위로 변경하기위해 해줍니다.

60 ( 1분은 60초니까 60을 곱해주시구요~)

60( 1시간은 60분이니까 또 60을 곱해주시구요~)

마지막으로 24시간을 곱하시면 일로 변경하게되니까.. 구해지는 시간에서 나눠주시면됩니다.




Recent Comments