Ch.10 날짜와 시간 & 형식화
- 날짜와 시간
- Calendar와 Date
- Date: 날짜와 시간을 다룰 목적 (단점: 날짜와 시간을 같이 다룸)
- Calendar: Date의 부족한 기능을 보완 (단점: 멀티 쓰레드 환경에서 안전하지 않음)
- Calendar의 getInstance()를 통해 객체 얻음
- java.time: Date와 Calender의 부족한 기능을 보완
- Calendar와 Date의 변환
- Calendar → Date
- Date d = new Date(Calendar.getInstance().getTimeInMillis());
- Date → Calendar
- Calendar c = Calendar.getInstacne().setTime(new Date());
- Calendar → Date
- 형식화 클래스
- DecimalFormat
- java.txt에 포함
- 숫자를 형식화
- 숫자, 날짜, 텍스트 데이터를 일정한 형식에 맞게 표현할 수 있음
- 역으로 형식화된 문자열에서 데이터를 얻을 수 있음
- SimpleDateFormat
- 날짜 데이터를 원하는 형태로 출력할 수 있음
- 사용 방법
- 원하는 출력 형식의 패턴을 작성해서 SimpleDateFormat의 인스턴스를 생성
- 출력하고자하는 Date 인스턴스를 SimpleDateFormat의 format(Date d)를 이용해서 String으로 반환 받음
- Calendar의 출력 형식을 바꾸고 싶은 경우, Calander를 Date로 변환하여 사용
- ChoiceFormat
- 특정 범위에 속하는 값을 문자열로 변환
- 연속적/불연속적인 범위의 값들을 처리하는 데 유용
- 사용 방법
- ChoiceFormat c = new ChoiceFormat(double[] limits, String[] formats);
- MessageFormat
- 데이터를 정해진 양식에 맞게 출력할 수 있도록 도와줌
- 데이터가 들어갈 자리를 마련해놓은 양식을 미리 작성하고 프로그램을 이용해서 다수의 데이터를 같은 양식으로 출력할 때 사용
- 또한 parse를 이용해서 지정된 양식에서 필요한 데이터를 추출할 수 있음
- Java.time 패키지
- Java.time 패키지의 핵심 클래스
- LocalDate 클래스 + LocalTime 클래스 = LocalDateTime 클래스
- LocalDateTime 클래스 + 시간대 = ZonedDateTime
- 날짜와 날짜의 차이: Pariod
- 시간과 시간의 차이: Duration
- 객체 생성 방법
- now(): 현재 날짜와 시간을 저장하는 객체 생성
- of(): 해당 필드의 값을 지정
- LocalDate와 LocalTime
- 생성: now(), of()
- 특정 필드의 값 가져오기: get(), getXXX()
- 필드의 값 변경하기: with(), plus(), minus()
- Instant
- 에포크 타임부터 경과된 시간을 나노초 단위로 표현
- 생성 방법: now(), ofEpochSecond()
- 필드의 값 가져오기: getNano(), getEpochSecond()
- LocalDateTime과 ZonedDateTime
- LocalTime과 LocalDate로 LocalDateTime 만들기
- LocalDateTime dt = LocalDateTime.of(LocalDate date, LocalTime time);
- 또는 직접 지정할 수 있는 of()와 now()가 정의되어 있음
- LocalDateTime을 LocalDate와 LocalTime으로 나누기
- LocalDateTime의 toLocalDate() 이용
- LocalDateTime의 toLocalTime() 이용
- ZonedDateTime의 변환 (일부)
- LocalDate: toLocalDate()
- LocalTime: toLocalTime()
- ZonedDateTime과 GregorianCalendar의 변환
- ZonedDateTime → GregorianCalendar: from(ZonedDateTime zdt)
- GregorianCalendar → ZonedDateTime: toZonedDateTime()
- LocalTime과 LocalDate로 LocalDateTime 만들기
- TemporalAdjusters
- 자주 쓰일만한 날짜 계산들을 대신해주는 메서드를 정의해놓은 클래스
- 직접 만들기 위해서는 TemporalAdjuster 인터페이스를 구현
- Period와 Duration
- 두 날짜의 차이를 나타내는 방법: between(), until() //각각 static, 인스턴스 메서드
- 특정 필드의 값을 얻는 방법: get()
- 사칙 연산, 비교연산 등: plus(), minus() 등
- 파싱과 포맷
- 파싱: 데이터에서 필요한 부분만 해석해서 가져오기
- 포맷: 날짜와 시간을 원하는 형식으로 출력
- DateTimeFormatter
- 직접 원하는 형식으로 포멧하기: ofPattern("출력형식지정")
- 문자열을 날짜와 시간으로 파싱하기: parse(CharSequnce text, DateTimeFormatter formatter)
'JAVA 기초' 카테고리의 다른 글
[JAVA 기초] JAVA의 정석 - Ch.12 지네릭스, 열거형, 애너테이션 (정리) (3) | 2025.01.22 |
---|---|
[JAVA 기초] JAVA의 정석 - Ch.11 컬렉션 프레임웍 (정리) (1) | 2025.01.21 |
[JAVA 기초] JAVA의 정석 - Ch.09 Java.lang 패키지와 유용한 클래스 (정리) (2) | 2025.01.16 |
[JAVA 기초] JAVA의 정석 - Ch.08 예외 처리(Exception handling) (정리) (1) | 2025.01.16 |
[JAVA 기초] JAVA의 정석 - Ch.07 객체지향 프로그래밍 II (정리) (1) | 2025.01.15 |