Java 프로그래밍기초 230223 #12 날짜와시간/Calendar/형식화 클래스/java.time

김춘복·2023년 2월 22일
0

Java 공부

목록 보기
15/20
post-custom-banner

날짜와 시간

날짜와 시간을 다룰 목적으로 JDK 1.0부터 Date 클래스가 제공되었으나 기능이 빈약하여 JDK1.1부터 Calendar 클래스를 제공했다.
하지만 Calendar에도 윤초를 고려하지 않고, month를 나타낼 때 1~12월을 0~11로 표현해야하는 등 여러 불편함이 있었다.
그래서 JDK 1.8부터 java.time 패키지라고 기존의 단점들을 개선한 새로운 클래스가 추가되었다.
하지만 Calendar는 20년 넘게 사용되어왔고 지금도 쓰는 곳이 있어 간단하게나마 알고 넘어가야한다.

Calendar클래스

  • Calendar는 추상클래스이기때문에 직접 객체를 생성할 수 없고 메서드를 통해 완전히 구현된 클래스의 인스턴스를 얻어야 한다. 기본적으로 현재날짜와 시간으로 설정.
    Calandar today = Calander.getInstance();

  • 활용 예

Calendar today = Calendar.getInstance();
System.out.println(today.get(Calendar.YEAR))

인스턴스.get(Calendar.원하는정보대문자로)
YEAR, MONTH, DATE, WEEK_OF_YEAR, HOUR등..
원하는 날짜나 시간으로 설정하려면 set()을 사용하면 된다.
주의할 점은 month를 나타낼 때 1~12월을 0~11로 표현한다.

  • Date클래스는 이제 잘 쓰지 않는다. Calendar 클래스로 변환 시킬 일이 있다면 그냥 검색하자.

형식화 클래스

: java.text패키지에 포함되어 있다. 숫자를 다양한 형식(패턴)으로 출력할 수 있게 해준다.

  • DecimalFormat : 형식화 클래스 중 숫자를 형식화하는데 사용되는 것.

  • SimpleDateFormat : 날짜의 형식화.

  • MessageFormat : 텍스트의 형식화.


java.time 패키지

: Calendar 패키지의 단점을 보완하기위해 JDK 1.8부터 추가된 패키지
이 패키지에 속한 클래스들은 모두 불변.

  • 날짜를 표현할 때는 Localdate, 시간을 표현할 때는 LocalTime을 사용
    LocalDateTime으로 날짜와 시간을 같이 표현할 수 있다.
    시간대까지 다룰 때는 ZonedDateTime 사용
    Period는 날짜간의 차이. Duration은 시간의 차이를 표현할 때 사용
  • now()는 현재, of()는 특정 날짜나 시간
LocalDate today = LocalDate.now(); // 오늘의 날짜
LocalTime now = LocalTime.now();	// 현재 시간

LocalDate birthDate = LocalDate.of(1993, 05, 16) // 1993년 5월 16일
LocalTime birthTime = LocalTime.of(23, 59, 59)  // 23시 59분 59초

LocalDate birthDate2 = LocalDate.of(1993, 365)	// 1993년 12월 31일. 일단위도 가능

더 자세한 내용은 여기 참고

profile
Backend Dev / Data Engineer
post-custom-banner

0개의 댓글