JAVA/포스팅

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

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

java.time 패키지의 Temporal 인터페이스는 날짜 및 시간의 개념을 나타내는 클래스가 구현해야 하는 인터페이스입니다. Temporal은 시간적인 정보에 접근하고 조작하는 메서드를 제공하는데, 이는 java.time 패키지의 많은 클래스에서 사용됩니다.

Temporal 인터페이스는 두 가지 주요 서브 인터페이스를 가지고 있습니다.

 

1. TemporalAccessor 인터페이스

TemporalAccessor는 읽기 전용 메서드를 제공하는데, 이를 통해 날짜 및 시간 필드에 접근할 수 있습니다.

 

2. TemporalAdjuster 인터페이스

TemporalAdjuster는 시간을 조정하는 메서드를 정의하는데, 이를 통해 날짜 및 시간을 조작할 수 있습니다.

 

Temporal 인터페이스에서 자주 사용되는 메서드

 

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

- getLong(TemporalField field) 메서드 : 지정된 필드의 값을 long 형식으로 반환합니다.

- with(TemporalField field, long newValue) 메서드 : 지정된 필드의 값을 변경한 새로운 Temporal 객체를 반환합니다.

- plus(long amountToAdd, TemporalUnit unit) 메서드 : 지정된 단위로 시간을 더한 새로운 Temporal 객체를 반환합니다.

- minus(long amountToSubtract, TemporalUnit unit) 메서드 : 지정된 단위로 시간을 뺀 새로운 Temporal 객체를 반환합니다.

 

emporal 인터페이스를 구현한 클래스 중 일부는 Instant, LocalDate, LocalTime, LocalDateTime, ZonedDateTime 등이 있습니다. 이러한 클래스들은 날짜와 시간을 효과적으로 다루기 위해 Temporal 인터페이스의 메서드를 구현합니다.

 

아래는 Temporal 인터페이스를 사용하는 간단한 예제입니다

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

public class TemporalExample {
    public static void main(String[] args) {
        // 현재 날짜를 가져오기
        LocalDate currentDate = LocalDate.now();
        System.out.println("Current Date: " + currentDate);

        // 특정 필드의 값 얻기
        int year = currentDate.get(ChronoField.YEAR);
        System.out.println("Year: " + year);

        // 특정 필드의 값을 변경한 새로운 날짜 얻기
        LocalDate newDate = currentDate.with(ChronoField.YEAR, 2022);
        System.out.println("New Date: " + newDate);

        // 특정 단위로 날짜를 더한 새로운 날짜 얻기
        LocalDate plusDate = currentDate.plus(7, ChronoUnit.DAYS);
        System.out.println("Date Plus 7 Days: " + plusDate);
    }
}

이 예제에서는 LocalDate 클래스를 사용하여 현재 날짜를 가져오고, 특정 필드의 값을 얻으며, 필드의 값을 변경하고, 날짜에 일정한 단위를 더하는 방법을 보여줍니다.

 

With ChatGPT

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

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