본문 바로가기
개발자/Android

D-Day 계산 알고리즘 (날짜 오차 안나도록)

by Alex.K 2011. 9. 10.
반응형


이 글을 딱히 안드로이드에만 적용되는 부분은 아닙니다.

제가 지금 현재 날짜 계산 프로그램을 만들고 있습니다. 그런데 예전에 저의 봉봉이와 함께 쓰기 위한 D-day 프로그램을 만들었었는데 이게 왠일 다른 분들을 알고리즘을 사용하였는데 프로그램을 작동 시킬때 날짜가 1일 차이로 계산 바뀌는 것이었습니다. 참으로 이상함을 느끼고 이번에 만드는 프로그램에는 제대로 만들어 보겠다고 생각하고 이리 찾아보고 저리 찾아본 결과 답이 나오게 되었습니다.

소스는 정말 참으로 간단합니다.


public class dday{
	public int caldate(int myear, int mmonth, int mday) {
		try {
			Calendar today = Calendar.getInstance(); //현재 오늘 날짜
			Calendar dday = Calendar.getInstance(); 


			dday.set(myear,mmonth,mday);// D-day의 날짜를 입력합니다.


			long day = dday.getTimeInMillis()/86400000; 
			// 각각 날의 시간 값을 얻어온 다음 
			//( 1일의 값(86400000 = 24시간 * 60분 * 60초 * 1000(1초값) ) )


			long tday = today.getTimeInMillis()/86400000;
			long count = tday - day; // 오늘 날짜에서 dday 날짜를 빼주게 됩니다.
			return (int) count+1; // 날짜는 하루 + 시켜줘야합니다.
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
			return -1;
		} 
	}
}

 소스는 참 간단한데 위의 소스에서 보시면 각 날짜의 시간을 따로 불러들어와서 그 날 값을 서로 빼주게 됩니다. 다른 블로그에 있는 방법으로 사용을 하면 이상하게 저는 날짜가 한번씩 번갈아 가면서 계산이 되던데 저런식으로 해주니 날짜의 변동이 일어나지 않더군요. 제가 아직까지 프로그래밍에 많이 미숙하여 잘 모르는 부분일 수도 있습니다. 혹시나 다른 지식인 분들께서 아시는 정보가 있으시면 많이 알려주시면 감사하겠습니다.

반응형

댓글