티스토리 뷰

날짜와시간

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에 정의된 필드

 

더보기

get()으로 날짜와 시간 필드 가져오기 - int get(int field)

Calendar cal = Calendar.getInstance();  // 현재 날짜와 시간으로 세팅됨
int thisYear = cal.get(Calendar.YEAR);  // 올해가 몇 년인지 알아낸다.
int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE);  // 이 달의 마지막날

달의 마지막 날 알아내는 방법 또는 올해가 몇 년인지 알아내는 방법을 알아두면 되겠다.

Calendar에 정의된 필드

Calendar에 정의된 날짜 관련 필드
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
댓글
공지사항