Java/객체지향

[객체지향][자바의 정석] - 10. 1 날짜와 시간

얄루몬 2022. 1. 21. 20:01

1. Calendar과 Date

  • java.utill.Date 
    • 날짜와 시간을 다룰 목적으로 만들어진 클래스
    • Date의 메서드는 거의 deprecated(앞으로 사용 X)되었지만, 여전히 쓰이고 있다
  • java.utill.Calendar
    • Date 클래스를 개선한 새로운 클래스 . 그러나 여전히 딘점 존재
      • 날짜와 시간을 함께 다루는 것이 캘린더의 가장 큰 단점이었다.
  • java.time 패키지(가능하면 이걸 많이 쓰자 ~)
    • Date와 Calendar의 단점을 개선한 새로운 클래스들을 제공
      • 날짜와 시간을 따로 다룰 수 있게 개선하였다.

 

2. Calendar 클래스

  • 캘린더 클래스는 추상클래스이기 때문에 객체 생성이 불가하다.
    • 추상 클래스이기때문에 getInstance()를 통해 구현된 객체를 얻어야 한다. 
Calendar cal = new Calendar(); // 에러!! 추상클래스는 인스턴스를 생성할 수 없다.

 

  • 추상클래스로 캘린더 클래스를 만든 이유는?
    • 추상화 하지 않으면 사용할 클래스를 지정해 놓으면 경우에 따라서 그 부분을 변경해야하기 때문이다.
  • 캘린더 클래스 사용방법(아래 코드처럼 getInstance() 사용해서!!)
Calendar cal = Calendar.getInstance(); // 이렇게 구현된 객체를 얻어오는 작업을 해야 한다.

 

 

3. Calendar의 주요 메서드

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

import java.util.Calendar;

public class Java10_1 {
	public static void main(String[] args) {
		Calendar cal = Calendar.getInstance();
		int thisYear = cal.get(Calendar.YEAR); // 올해가 몇년인지 알아냄
		int lastDayOfMonth = cal.getActualMaximum(Calendar.DATE); //이 달의 마지막날을 알아냄
		System.out.println(thisYear);
		System.out.println(lastDayOfMonth);
	}
	
}

캘린더에 정의된 필드

- WEEK_OF_YEAR 오타입니다 ~

 

 

 

4. Calendar 클래스 예제

  • set()으로 날짜와 시간지정하기
  • clear()는 Calendar 객체의 모든 필드를 초기화시켜준다.  
    • 특정필드 초기화도 가능
  • add()는 특정필드의 값을 증가 또는 감소(다른 필드에 영향을 준다.)
  • roll()은 특정필드의 값을 증가 또는 감소(다른 필드에 영향을 주지 않는다.)