백엔드/Java의 정석

TIL 정리_17

ran4 2022. 3. 4. 23:15

 

java.time패키지

패키지 설명
java.time 날짜와 시간을 다루는데 필요한 핵심 클래스들을 제공
java.time.chrono 표준(ISO)이 아닌 달력 시스템을 위한 클래스들을 제공
jave.time.format 날짜와 시간을 파싱하고, 형식화하기 위한 클래스들을 제공
jave.time.temporal 날짜와 시간의 필드(field)와 단위(unit)를 위한 클래스들을 제공
jave.time.zone 시간대(time-zone)와 관련된 클래스들을 제공

위 패키지에 속한 클래스들은 String 클래스처럼 불변이다

 

Calendar와 다르게 날짜와 시간을 별도의 클래스로 분리했다

LocalDate + LocalTime -> LocalDateTime

LocalDateTime+시간대 -> ZonedDateTime

 

java.time 패키지 클래스의 객체 생성

now() 현재 날짜와 시간을 저장하는 객체 생성

LocalDateTime.now()

of() 해당 필드의 값을 순서대로 지정하여 사용한다

LocalDateTime.of(dateTime, ZoneId.of("Asia/Seoul"));

 

Temporal과 TemporalAmount

Temporal, TemporalAccessor, TemporalAdjuster를 구현한 클래스
LocalDate, LocalTime, LocalDateTime, ZonedDateTime, Instant 등
TemporalAmount를 구현한 클래스
Peroid, Duration

 

LocalDate와 LocalTime

static 메서드이며 now()와 of()를 사용하여 객체를 생성한다

parse()를 이용하여 문자열을 날짜와 시간으로 변환할 수 있다

 

특정필드의 값 가져오기

get(), getLong() //int타입의 범위를 넘었을 때 사용

 

필드의 값 변경

with() 원하는 필드 직접 지정

LocalDate with(TemporalField field, long newValue)

plus() minus() -더하기 빼기 

truncatedTo() 지정된 것보다 작은 단위의 필드를 0으로 만든다

 

날짜와 시간의 비교

compareTo()로 비교가 가능하지만, 아래의 메서드로 편하게 비교할 수 있다

isAfter(), isBefore() 

isEqual() 연표가 다른 두 날짜를 비교할 때 사용 equals()와 결과는 같다

 

Instant 

에포크 타임부터 경과된 시간을 나노초 단위로 표현한다

now()와 ofEpochSecond()를 사용한다

Instant와 Date간의 변환

Instant -> Date : static Date   from(Instant instant)

Date -> Instant : Instant        toInstant() 

 

Period : 두 날짜간의 차이를 표현

Duration : 시간의 차이를 표현

Period와 Duration의 활용

between() 두 날짜간의 차이 //static 메서드

until() 위와 같은 일을 한다 //instance 메서드

 

다른 단위로 변환

클래스 메서드 설명
Period long toTotalMonths() 년월일을 월단위로 변환해서 반환(일 단위는 무시)
Duration long toDays() 일단위로 변환해서 반환
long toHours() 시간단위로 변환해서 반환
long toMinutes() 분단위로 변환해서 반환
long toMillis() 천분의 일초 단위로 변환해서 반환
long toNanos() 나노초 단위로 변환해서 반환

 

 

파싱과 포맷

parsint(파싱) : 날짜와 시간을 원하는 형식으로 출력하고 해석

formatting(형식화) : DateTimeFormatter가 핵심으로 사용된다

 

출력형식 직접 정의하기

DateTimeFormatter의 ofPattern()으로 원하는 출력형식을 직접 작성할 수 있다

 

문자열을 날짜와 시간으로 파싱하기

문자열을 날짜 또는 시간으로 변환하려면 static 메서드 parse()를 사용한다

 

'백엔드 > Java의 정석' 카테고리의 다른 글

TIL 정리_19  (0) 2022.03.06
TIL 정리_18  (0) 2022.03.05
TIL 정리_16  (0) 2022.03.03
TIL 정리_15  (0) 2022.03.02
TIL 정리_14  (0) 2022.03.01