자바 8에 오면서 새로운 날짜, 시간 API가 생겼다
// date와 관련된 기존 format
Date date = new Date();
Calendar calendar = new GregorianCalendar();
SimpleDateFormat dateFormat = new SimpleDateFormat();
System.out.println(date);
//Tue Oct 06 10:17:52 KST 2020
long time = date.getTime();
System.out.println(time);
// date에서 시간을 가져온다?
// time은 실제 시간이 아닌 기준시 로부터 밀리 세컨을 센 값
// 기계시간으로 1601898495146 식으로 나온다
//3초재우기
Thread.sleep(1000 * 3);
Date after3Seconds = new Date();
System.out.println(after3Seconds); (18초)
//지난 과거의 시간을 가져와서 시간을 지정할 수 있다
//time == Mon Oct 05 20:48:15 KST 2020 (15초)
after3Seconds.setTime(time); (과거의 15초로 설정)
System.out.println(after3Seconds);
//Mon Oct 05 20:48:18 KST 2020
//Mon Oct 05 20:48:15 KST 2020
쓰레드 sleep으로 3초를 보내고 시간을 찍었지만 과거의 시간으로 setTime할 수 있다
//아래와 같이 생년월일을 표시할때 month에 경고를 날려주는데
//Gregori에서 month가 0부터 시작하므로 0이 1월을 나타내게 된다
//따라서 실수의 가능성이 높기 때문에 숫자대신 상수를 쓰도록 경고해주게 된다 -> Calendar.NOVEMBER
Calendar woonsikBirthDay = new GregorianCalendar(1995, Calendar.NOVEMBER, 9);
// type safty가 없다. 즉, 함수의 인자로 int형을 다 받을수 있게 되있어서 들어오는 인자가
// 음수이든 범위를 넘는 숫자의 입력에 대한 보호가 안된다
JSR-310 스펙의 구현체를 제공
디자인 철학
Clear, Fluent, Immutalbe, Extensible
참고
주요 API
기계용 시간(machin time)과 인류용 시간(human time)으로 구분
기계용 시간 : EPOCK시부터 현재까지의 타임스탬프를 표현
인류용 시간 : 연,월,일,시,분,초 등을 표현