728x90
반응형
자바의 정석 책을 공부하고 정리한 글입니다!
혹시라도 틀린 부분이 있다면 친절하게 알려주세요.
감사합니다!
CH10. 날짜와 시간 & 형식화
형식화 클래스
- DecimalFormat
숫자를 형식화 하는데 사용되는 클래스입니다. 숫자 데이터를 정수, 부동소수점, 금액 등의 다양한 형식으로 표현할 수 있으며, 반대로 일정한 형식의 텍스트 데이터를 숫자로 쉽게 변환하는 것도 가능합니다. - SimpleDateFormat
날짜 데이터를 원하는 형태로 출력할 수 있도록 도와주는 클래스입니다. - ChoiceFormat
특정 범위에 속하는 값을 문자열로 변환해주는 클래스입니다.
연속적 또는 불연속적인 범위의 값들이 처리하는 데 있어서 if문이나 switch문은 적절하지 못한 경우가 많습니다. 이럴 때 ChoiceFormat을 잘 사용하면 코드를 간단하고 직관적으로 만들 수 있습니다. - MessageFormat
데이터를 정해진 양식에 맞게 출력할 수 있도록 도와주는 클래스입니다. 양식을 미리 작성하고 다수의 데이터를 같은 양식으로 출력할 때 사용하면 좋습니다.
java.time 패키지
Date와 Calendar가 가지고 있는 단점들을 해소하기 위해 JDK1.8부터 java.time 패키지가 추가되었으며, 다음과 같이 4개의 하위 패키지를 갖고 있습니다.
- java.time.chrono: 표준(ISO)이 아닌 달력 시스템을 위한 클래스 제공
- java.time.format: 날짜와 시간을 파싱하고, 형식화하기 위한 클래스 제공
- java.time.temporal: 날짜와 시간의 필드와 단위를 위한 클래스 제공
- java.time.zone: 시간대와 관련된 클래스 제공
위의 패키지들에 속한 클래스들의 가장 큰 특징은 불변(immutable)이라는 것입니다. 따라서 날짜나 시간을 변경하는 메서드들은 기존의 객체를 변경하는 대신 항상 변경된 새로운 객체를 반환합니다.
java.time패키지의 핵심 클래스는 다음과 같습니다:
- LocalTime: 날짜 표현
- LocalDate: 시간 표현
- LocalDateTime: 날짜 + 시간 표현
- ZonedDateTime: 날짜 + 시간 + 시간대까지 표현
LocalDate와 LocalTime
java.time패키지의 가장 기본이 되는 클래스로, 객체 생성 방법은 다음과 같습니다.
// now()로 생성하는 방법
LocalDate today = LocalDate.now(); // 오늘의 날짜
LocalTime now = LocalTime.now(); // 현재 시간
// of()로 생성하는 방법
LocalDate birthDate = LocalDate.of(2001, 11, 09); // 2001년 11월 9일
LocalTime birthTime = LocalTime.of(11, 31, 17); // 11시 31분 17초
now(), of()는 모두 static 메서드 입니다.
LocalDateTime과 ZonedDateTime
LocalDateTime은 다음과 같이 만들 수 있습니다.
// LocalDate와 LocalTime으로 만들기
LocalDate date = LocalDate.of(2001, 11, 09);
LocalTime time = LocalTime.of(11, 31, 17);
LocalDateTime birth = LocalDateTime(date, time);
// of(()
LocalDateTime dateTime = LocalDateTime.of(2001, 11, 09, 11, 31, 17);
// now()
LocalDateTime today = LocalDateTime.now();
LocalDateTime에 시간대를 추가하면 ZonedDateTime이 됩니다. 이때 atZone()을 사용하면 시간대 정보를 얻을 수 있습니다. 다음은 LocalDateTime으로 ZonedDateTime을 만드는 코드입니다.
ZoneId zid = ZoneId.of("Asial/Seoul");
ZonedDateTime zdt = dateTime.atZone(zid):
728x90
반응형
'도서 정리 > 자바의 정석' 카테고리의 다른 글
[자바의 정석] CH11 컬렉션 프레임워크(2) (1) | 2025.04.25 |
---|---|
[자바의 정석] CH11 컬렉션 프레임워크(1) (2) | 2025.04.23 |
[자바의 정석] CH09 java.lang패키지와 유용한 클래스 (1) (0) | 2025.04.16 |
[자바의 정석] CH08 예외처리 (1) | 2025.04.14 |
[자바의 정석] CH07 객체지향 프로그래밍Ⅱ (2) (2) | 2025.04.11 |