티스토리 뷰
날짜와시간
java.util.Date
- 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK1.0)
- Date의 메서드는 거의 deprecated되었지만, 여전히 쓰이고 있다.
java.util.Calendar
- Date클래스를 개선한 새로운 클래스(JDK1.1). 여전히 단점이 존재
java.time패키지
- Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공(JDK1.8)
Calendar클래스
- 추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.
더보기

추상 클래스이므로 getInstance()를 통해 구현된 객체를 얻어야 한다.

사용할 클래스를 직접 지정해주는 것 보다, 상황에 맞는 객체를 반환하도록 getInstance메서드를 통해 작성하는 게 더 좋은 코드이다. 이러한 것을 '추상화'라 한다.
Calendar cal = Calendar.getInstance();
따라서, Calendar 코드를 작성할 땐 위와 같이 작성하면 된다.
Calendar.get메서드
- get()으로 날짜와 시간 필드 가져오기 - int get(int field)
- Calendar에 정의된 필드
더보기

Calendar에 정의된 날짜 관련 필드

Calendar에 정의된 시간 관련 필드
get()으로 날짜와 시간 필드 가져오기 - int get(int field)
Calendar cal = Calendar.getInstance(); // 현재 날짜와 시간으로 세팅됨
int thisYear = cal.get(Calendar.YEAR); // 올해가 몇 년인지 알아낸다.
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); // 이 달의 마지막날
달의 마지막 날 알아내는 방법 또는 올해가 몇 년인지 알아내는 방법을 알아두면 되겠다.
Calendar에 정의된 필드


ZONE : TimeZone(시간대). 한국은 +9시간 오차
예제 10-1
더보기
Ex10_1 실습
Calendar.set()
현재가 아니라, 특정 날짜로 변경하고 싶으면 get메서드가 아닌 set메서드를 사용하면 된다.
get메서드는 객체의 필드값을 가져오는 메서드이고, set메서드는 필드값(iv)을 변경하는 메서드이다.
Calendar.set메서드
- set()으로 날짜와 시간 지정하기
- 날짜 지정하는 방법. 월(MONTH)이 0부터 시작한다는 점에 주의
- 시간 지정하는 방법.
더보기


set()으로 날짜와 시간 지정하기

날짜 지정하는 방법. 월(MONTH)이 0부터 시작한다는 점에 주의

시간 지정하는 방법
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);
'시.분.초'만 설정할 수 있는 set메서드는 존재하지 않는다. 따라서 위와 같이 하나씩 따로 해줘야 한다.
예제 10-2
더보기

Ex10_2 실습 - 날짜 계산

예제 10-3
더보기

Ex10_3 실습 - 시간 계산

Calendar.clear메서드
- clear()는 Calendar객체의 모든 필트를 초기화
- clear(int field)는 Calendar객체의 특정 필드를 초기화
더보기

clear()는 Calendar객체의 모든 필트를 초기화

clear(int field)는 Calendar객체의 특정 필드를 초기화
Calendar dt = Calendar.getInstance();
// Tue Aug 29 07:13:03 KST 2017
System.out.println(new Date(dt.getTimeInMillis()));
dt.clear(Calendar.SECOND); // 초를 초기화
dt.clear(Calendar.MINUTE); // 분를 초기화
dt.clear(Calendar.HOUR_OF_DAY); // 시간을 초기화
dt.clear(Calendar.HOUR); // 시간를 초기화
// Tue Aug 29 00:00:00 KST 2017
System.out.println(new Date(dt.getTimeInMillis()));
자바의정석(3) 연습문제 10-5
날짜 또는 시간을 계산할 때, Calendar객체 생성 후, clear()를 호출하여 객체 초기화를 해야 한다.
그 다음에, set()을 사용해야 한다.
Calendar.add메서드
- add()는 특정 필드의 값을 증가 또는 감소(다른 필드에 영향o)
Calendar date = Calendar.newInstance();
date.clear(); // 모든 필드를 초기화
date.set(2022, 9, 31); // 2022년 10월 31일로 설정
date.add(Calendar.DATE, 1); // 날짜(DATE)에 1을 더한다. -> 2022년 11월 1일
date.add(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺀다. -> 2022년 3월 1일
Calendar.roll메서드
- roll()는 특정 필드의 값을 증가 또는 감소(다른 필드에 영향x)
date.set(2022, 10, 31); // 2022년 10월 31일로 설정
// add()와 달리 roll()는 다른 필드에 영향을 미치지 않는다.
date.roll(Calendar.DATE, 1); // 날짜(DATE)에 1을 더한다. -> 2022년 10월 1일
date.roll(Calendar.MONTH, -8); // 월(MONTH)에서 8을 뺀다. -> 2022년 2월 1일
Date와 Calendar간의 변환
- Date의 메서드는 대부분 deprecated되었지만 여전히 사용(하위 호환성)
더보기
Date의 메서드는 대부분 deprecated되었지만 여전히 사용 - 암기x, 필요할 때 참고
1. Calendar를 Date로 변환
Calendar cal = Calendar.getInstance();
...
Date d = new Date(cal.getTimeInMillis()); // Date(long date)
2. Date를 Calendar로 변환
Date d = new Date();
...
Calendar cal = Calendar.getInstance();
cal.setTime(d)
'Java의 정석_기초편' 카테고리의 다른 글
ArrayList (0) | 2022.11.01 |
---|---|
컬렉션 프레임웍과 핵심 인터페이스 (0) | 2022.11.01 |
Math클래스 (0) | 2022.10.28 |
StringBuffer클래스 (0) | 2022.10.27 |
StringJoiner, 문자열과 기본형 변환 (0) | 2022.10.27 |
댓글
공지사항