- 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0)
- Date의 메서드는 거의 deprecated(앞으로 사용하지 말라)되었지만, 여전히 쓰이고 있다.
-Date 클래스를 개선한 새로운 클래스(JDK1.1). 여전히 단점이 존재
- Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8)
단점 : 날짜와 시간을 같이 다뤄야한다는점
- 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.
Calendar cal = new Calendar(); // 에러! 추상클래스는 인스턴스를 생성할 수 없다. Calendar cal = Calendar.getInstance(); // OK.
Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 셋팅됨
int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아낸다.
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 달의 마지막날
필드명 | 설명 | 필드명 | 설명 |
---|---|---|---|
YEAR | 년 | HOUR | 시간(0~11) |
MONTH | 월(0부터 시작) | HOUR_OF_DAY | 시간(0~23) |
WEEK_OF_YEAR | 년 | MINUTE | 분 |
WEEK_OF_MONTH | 그 달의 몇 번째 주 | SECOND | 초 |
DATE | 일 | MILLISECOND | 천분의 일초 |
DAY_OF_MONTH | 그 달의 몇 번째일 | ZONE_OFFSET | GMT기준 시차(천분의 일초 단위) |
DAY_OF_YEAR | 그 해의 몇 번째일 | AM_PM | 오전/오후 |
DAY_OF_WEEK | 요일 | ||
DAY_OF_WEEK_IN_MONTH | 그 달의 몇 번째 요일 |
void set(int field, int value)
void set(int year, int month, int date)
void set(int year, int month, int date, int hourOfDay, int minute)
void set(int year, int month, int date, int hourOfDay, int minute, int second)
Calendar time1 = Calendar.getInstance();
time1.set(Calendar.HOUR_OF_DAY, 10); // time1을 10시 20분 30초로 설정
time1.set(Calendar.MINUTE, 20);
time1.set(Calendar.SECOND, 30);
시 분 초는 이렇게 따로 세팅해줘야됨
Calendar dt = Claendar.getInstance(); // 현재시간
// 현재시간
System.out.println(new Date(dt.getTimeInMillis()));
dt.clear(); // 모든 필드를 초기화
// Thu Jan 01 00:00:00 KST 1970
System.out.println(new Date(dt.getTimeInMillis()));
dt.clear(Calendar.SECOND); // 초를 초기화
dt.clear(Calendar.MINUTE); // 분을 초기화
내가 현재 시간으로 쓰는거 아니면 clear을 한 다음에 사용하는게 좋다.
Calendar date = Calendar.getInstance();
date.clear(); // 모든 필드를 초기화
data.set(2020, 7, 31); // 2020년 8월 31일로 설정
data.add(Calendar.DATE, 1); // 날짜(DATE)에 1을 더한다. - 9월 1일
data.add(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺀다. - 1월 1일
date.set(2020, 7, 31); // 2020년 8월 31일로 설정
date.roll(Calendar.DATE, 1); // 날짜(DATE)에 1을 더한다. - 8월 1일
date.roll(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺀다. - 12월 1일
- Date의 메서드는 대부분 deprecated 되었지만 여전히 사용
나중에 혹시 참고해야할때를 대비해 기록을 해놓자.
- Calendar를 Date로 변환
Calendar cal = Calendar.getInstance(); ... Date d = new Date(cal,getTimeInMillis()); // Date(long date)
- Date를 Calendar로 변환
Date d = new Date(); ... Calendar cal = Calendar.getInstance(); cal.setTime(d)