기록과 정리

Date와 Time API 본문

IT/Java

Date와 Time API

zepetto 2021. 8. 31. 19:01

이 글은 백기선님의 '더 자바, Java 8' 강의를 참고하였습니다.

https://www.inflearn.com/course/the-java-java8/lecture/48041?speed=1&tab=curriculum 

 

더 자바, Java 8 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

소개

자바8 이전에 java.util.Date 클래스의 단점은 명확했다. 예를 들어 Date라는 이름을 가지고 있지만 , Time을 가져온다거나 (불명확)

이름이 Date지만 Time을 가져온다.

중간에 set이 되면 안에 있는 값이 변경이 될 수도 있는 점(mutable하다)에서 Thread Safe 하지않으며

3초 뒤로 설정한 after3Second 하지만 setTime을 통해 중간에서 얼마든지 변경 가능.

-100과 같은 값들이 들어갈 수 있어 타입 안정성이 없다. Type Safe하지 않음.

조금 더 명확한 API가 자바 8부터는 사용가능하기 시작했다.

 

주요 API

우선 시간에는 2가지로 표현이 가능한데, 첫째로 기계용 시간. 즉 기계가 알아보기 쉬운 시간. 기계용 시간은 UTC or GMT 

UTC나 GMT는 기준시라하여 그리니츠 천문대가 있는 곳 기준의 시간을 말한다.

어느 Zone 기준으로 시간을 볼건지 출력이 가능하다.
순서대로 출력

두번째는 인간이 관측하는 시간을 가져올 수 있다. 

이것 또한 zone에 따른 시간을 구할 수 있다.

기간을 표현하는 방법 Period (인간용) , Duration(기계용) 기간을 표현한다고 보면 된다.

기간을 표현해보자.

Util을 이용해 포맷을 해도되지만 기본적으로 자바에서 포맷팅을 제공한다.

여러가지 format option들

https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

 

DateTimeFormatter (Java Platform SE 8 )

Parses the text using this formatter, without resolving the result, intended for advanced use cases. Parsing is implemented as a two-phase operation. First, the text is parsed using the layout defined by the formatter, producing a Map of field to value, a

docs.oracle.com

해당 레퍼런스로 가면 포멧팅에 대한 좀더 자세한 옵션들이 존재한다.

 

파싱은 값과 파싱할 데이터 타입을 넣으면 파싱이 가능하다.

또한 예전 API들이 새롭게 만들어진 API 들과 호환이 가능하도록 레거시 API를 지원해준다.

Date와 Instant , GeregorianCalendar과 ZonDateTime

 

'IT > Java' 카테고리의 다른 글

제네릭(Generic)에 대하여  (0) 2022.02.11
자바의 정석 6장) 객체지향 프로그래밍 1  (0) 2021.12.06
Java Optional  (0) 2021.08.23
Java8 Stream API (스트림 API)  (0) 2021.08.12
기본 메서드와 스태틱 메서드  (0) 2021.08.03