JAVA/포스팅

java.time 패키지의 TemporalAccessor 인터페이스

짜집퍼박사(짜박) 2023. 11. 17. 15:19

TemporalAccessor는 java.time 패키지에서 시간 기반의 값을 읽기 위한 읽기 전용 인터페이스입니다. 이 인터페이스는 시간적인 정보에 접근하는 메서드를 정의하고 있습니다.

 

TemporalAccessor 인터페이스의 주요 메서드

 

- long getLong(TemporalField field) 메서드 : 지정된 TemporalField에 해당하는 값을 long 형식으로 반환합니다.

- boolean isSupported(TemporalField field) 메서드 : 지정된 TemporalField가 지원되는지 여부를 반환합니다.

- int get(TemporalField field) 메서드 : 지정된 TemporalField에 해당하는 값을 int 형식으로 반환합니다.

- <R> R query(TemporalQuery<R> query) 메서드 : 특정 유형의 값을 검색하는데 사용되는 메서드입니다. 예를 들어, TemporalQueries.precision()를 사용하여 정밀도를 얻을 수 있습니다.

- ZoneOffset getOffset() 메서드 : 현재 시점의 오프셋을 반환합니다.

 

TemporalAccessor는 읽기 전용이기 때문에 값을 수정하는 메서드는 제공하지 않습니다. 대신 값의 특정 필드를 읽고 쿼리하는 데 사용됩니다.

TemporalAccessor 인터페이스를 구현하는 클래스 중 일부에는 Instant, LocalDate, LocalTime, LocalDateTime, ZonedDateTime 등이 있습니다.

아래는 TemporalAccessor 인터페이스의 사용 예제입니다.

import java.time.LocalDate;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAccessor;

public class TemporalAccessorExample {
    public static void main(String[] args) {
        // LocalDate를 TemporalAccessor로 사용
        TemporalAccessor accessor = LocalDate.of(2022, 1, 1);

        // 특정 필드의 값 얻기
        long year = accessor.getLong(ChronoField.YEAR);
        int month = accessor.get(ChronoField.MONTH_OF_YEAR);
        int day = accessor.get(ChronoField.DAY_OF_MONTH);

        System.out.println("Year: " + year);
        System.out.println("Month: " + month);
        System.out.println("Day: " + day);

        // TemporalQuery를 사용하여 정밀도 얻기
        TemporalQuery<String> precisionQuery = TemporalQueries.precision();
        String precision = accessor.query(precisionQuery);

        System.out.println("Precision: " + precision);
    }
}

이 예제에서는 LocalDate를 TemporalAccessor로 사용하여 특정 필드의 값을 읽어오고, TemporalQuery를 사용하여 정밀도를 얻는 방법을 보여줍니다.

 

With ChatGPT

'JAVA > 포스팅' 카테고리의 다른 글

자바 컬렉션 프레임워크 ArrayList  (0) 2023.11.18
자바 컬렉션 프레임워크  (0) 2023.11.18
java.time 패키지의 Temporal 인터페이스  (0) 2023.11.17
java.time.Clock 클래스  (0) 2023.11.17
java.time.YearMonth 클래스  (0) 2023.11.17