이 글은 Java의 정석 3rd Edition을 읽고 정리한 내용입니다.
Chapter 10

날짜와 시간 & 형식화
1. 날짜와 시간
1.1 Calendar와 Date
Date 와 Caledar는 날짜와 시간을 다룰 목적으로 20년이 넘게 사용되어온 클래스이다. 하지만 Date와 Calendar는 아래오 같은 단점이 있다.
1. API가 현실의 사회 제도, 과학, 역사적 문제와 복잡하게 얽혀 있음
2. Calendar와 Date는 불변 객체가 아님
3. 오류에 둔감한 시간대 ID 지정
등 다양한 단점이 발견되었다. 이를 해결하기위해 자바 1.8버전 이후 java.time을 사용하고 있다.
2. 형식화 클레스
2.1 DecimalFormat
숫자를 형식화 되는데 사용되는 클레스로 숫자 데이터를 정수,부동소수점,금액 등의 다양한 형식으로 표현 가능하다. 또한 일정한 텍스트 데이터를 숫자로 쉽게 반환하는 것도 가능하다.
2.2 SimpleDateFormat
Date타입으 인스턴스를 지정한 출력형식에 맞게 문자열을 변환하는 클래스
Date와 Calendar의 다양한 형태의 출력은 불편하다는 단점을 보완 해준다.
2.3 ChoiceFormat
특정 범위에 속하는 값을 문자열로 변환해주는 클래스로 연속적,불연속적인 범위의 값들을 간단하고 직관적이게 만들수 있다는 장점이 있다
2.4 MessageFormat
데이트를 정해진 양식에 맞게 출력할 수 있도록 도와주는 클레스로 데이터가 들어갈 자리를 마련해 놓은 양식을 작성하고 다수의 데이터를 같은 양식으로 출력할때 사용하면 좋다.
3. java.time 패키지
Date와 Calendat의 단점을 해소하기 위한 패키지로 하위 4개의 패키지를 가지고있다
java.time : 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공
java.time.chrono : 표준이 아닌 달력 시스템을 위한 클래스들을 제공
java.time.format : 날짜와 시간을 파싱하고,형식화하기 위한 클래스들을 제공
java.time.temporal : 날짜와 시간의 필드와 단위를 위한 클래스들을 제공
java.time.zone : 시간대와 관련된 클래스들을 제공
3.1 java.time패키지의 핵심 클래스
java.time 패키지엔 날짜와 시간의 클래스로 분리해 놓았다.
LocalTime : 시간을 표현하기 위한 클래스
LocalDate : 날짜를 표현하기 위한 클래스
LocalDateTime : 날짜와 시간을 모두 표현하기 위한 클래스
3.2 LocalDate와 LocalTime
LocatDate와 LocatTime 은 java.time패키지의 가장 기본이 되는 클래스이다.
LocalDate.now(),LocalTime.now : 현재 날짜와 시간을 가지고 오는 static 메서드
LocalDate.of()와 LocalTime.of() : 지정된 날짜와 시간으로 생성하는 static 메소드
LocalDate.getxxx(),LocalTime.getxxx() 객체에서 특정 필드의 값을 가져올 때에 사용하는 메소드
LocatlDate.withxx(),LocalTime.withxxx() 특정 필드의 값을 변경하는 메소드
LocatlDate.plus/minus(),LocalTime.plus/minus() 특정 필드의 값을 더하거나 뺴는 메소드
3.3 LocalDateTime과 ZoneDateTime
LocatDate와 LocatTime을 합쳐 놓은 것이 LocalDateTime이다.
LocalDateTime에 시간대를 추가한 것이 ZonedDateTime이다.
3.4 Period와 Duration
날짜간의 비교를 해주는 메소드 isAfter(),isBefore(),isEqual()등이 있지만 날짜의 차이 시간의 차이를 직접 계산할 수는 없다.
Period 는 날짜의 차이를 Duration은 시간의 차이를 계산하는 것이다.
3.5 파싱과 포맷
날짜와 시간을 형식화와 관련된 클래스들은 java.time.format에 들어있는데 이중 DateTimeFormat이 가장 핵심이다.
LocalDate나 LocalTime 또한 format() 메소드를 지원한다.
'자바의 정석' 카테고리의 다른 글
| 자바의 정석 12장 (0) | 2023.08.27 |
|---|---|
| 자바의 정석 11장 (0) | 2023.08.22 |
| 자바의 정석 6장 (0) | 2023.06.13 |
| 자바의 정석 5장 (0) | 2023.06.06 |
| 자바의 정석 3장 (0) | 2023.06.01 |