날짜와 시간, Calendar 클래스

0

날짜와 시간

  • java.util.Date
    • 날짜와 시간을 다룰 목적으로 만들어진 클래스(JDK 1.0, 1995년 말~)
    • Date의 메소드는 거의 deprecated(앞으로 사용X)되었지만, 여전히 쓰고 있다.(예전부터 사용해서 뿌리가 깊기 때문에 아직 사용)
  • java.util.Calendar → 실무에서 여전히 많이 쓰임
    • Date클래스를 개선한 새로운 클래스(JDK1.1, 1997년). 여전히 단점이 존재
  • java.time 패키지
    • Date와 Calendar의 단점을 개선한 새로운 클래들을 제공(JDK1.8(Java8), 2014~)
      → Date와 Calendar 단점: 날짜와 시간을 같이 다룸
      ↳ time : 날짜(LacalDate) 시간(LocalTime), 날짜+시간(LocalDateTime) 따로 가능

Calendar 클래스

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

Calendar cal = new Calendar();  // 에러! 추상클래스는 인스턴스를 생성할 수 없다.
Calendar cal = Calendar.getInstance();
// 가능, getInstance()메소드는 Calendar클래스를 구현한 클래스의 인스턴스를 반환한다.

↳ getInstance()를 호출하면, 메소드가 사용자시스템에 있는 정보를 읽어와서 어떤 캘린더를 쓰는지 확인해서 3가지 중에서 1개를 반환해줌(우리나라는 서양력) new GregorianCalendar() 객체를 만들어서 반환해줌

  • Calendar
    1) 서양력 - gregorian : 우리나라가 씀
    2) 불교력
    3) 일본력

    → 그럼 왜 new GregorianCalendar()를 안쓰고 Calendar.getInstance()를 쓰는가?
    : 특정 캘린더 코드를 넣어놓으면 다른 캘린더를 사용해야할 때 원하는 캘린더로 또 코드를 수정해줘야하기때문에, 직접 지정하는것보다 메소드를 넣어서 상황에 맞게 반환하는게 더 좋음 (추상화)

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

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

Calendar에 정의된 필드

1) 날짜

2) 시간


⇒ 다 외우지 않아도 됨. 필요할 때 보고 쓰면 돼!

출처

  • 자바의 정석 기초편 : ch 10- 1~3
profile
백엔드를 공부하고 있습니다.

0개의 댓글