교재에서는, 생일을 2000-01-01로, 오늘 날짜를 2016-01-29로 설정하였기에, 정확히 계산이 되었는지 확인하기 위하여 교재와 같이 날짜를 설정했다.
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Exercise10_04 {
public static void main(String[] args) {
SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
Date birth1 = null;
Date today1 = null;
Calendar birth = Calendar.getInstance();
birth.set(2000, 0, 1);
birth1 = birth.getTime();
Calendar today = Calendar.getInstance();
today.set(2016, 0,29);
today1 = today.getTime();
//밀리세컨드 단위로 차이 결과 도출
long result = today1.getTime() - birth1.getTime();
long resultAns = result / (60*60*24*1000);
System.out.println("birth day=" + df1.format(birth1));
System.out.println("today =" + df1.format(today1));
System.out.println(resultAns + " days");
}
}
SimpleDateFormat으로 날짜의 출력 형식을 정해주고 (yyyy-MM-dd), 각각 생일과 오늘 날짜를 Calendar의 instance를 얻어서 설정해주고, Calendar로 설정한 날짜를 date로 변환한다.
※Calendar 타입으로 SimpleDateFormat 클래스의 format() 메서드를 사용하면 오류가 난다.
Date의 getTime() 메서드를 이용해서 밀리세컨드 단위로 각 날짜의 차이를 반환 받고,
Day 날짜를 기준으로 차이가 얼마나 나는지 보고 싶다면, getTime() 메서드로 반환 받은 값들의 차를 (60x60x24x1000)으로 나누어주면 값을 반환 받을 수 있다.