OffsetDateTime — 오프셋이 있는 날짜-시간

OffsetDateTime — 오프셋이 있는 날짜-시간

ISO-8601 달력 체계에서 UTC/그리니치로부터의 오프셋이 있는 날짜-시간을 나타내는 클래스예요. 예: 2007-12-03T10:15:30+01:00.

출처: Java API Reference

본문

시그니처

public final class OffsetDateTime extends Object
    implements Temporal, TemporalAdjuster, Comparable<OffsetDateTime>, Serializable

구현된 인터페이스: Serializable, Comparable<OffsetDateTime>, Temporal, TemporalAccessor, TemporalAdjuster.

설명

OffsetDateTime은 오프셋이 있는 날짜-시간의 불변 표현이에요. 이 클래스는 모든 날짜·시간 필드를 나노초 정밀도로 저장하고, UTC/그리니치로부터의 오프셋도 저장해요. 예를 들어 "2007년 10월 2일 13:45:30.123456789 +02:00"이라는 값을 OffsetDateTime에 저장할 수 있어요.

OffsetDateTime, ZonedDateTime, Instant는 모두 시간선 위의 순간을 나노초 정밀도로 저장해요. Instant는 가장 단순해서 순간만 나타내요. OffsetDateTime은 순간에 UTC/그리니치로부터의 오프셋을 추가해 로컬 날짜-시간을 얻을 수 있게 해 줘요. ZonedDateTime은 완전한 시간대 규칙을 추가해요.

더 단순한 애플리케이션에서는 ZonedDateTime이나 Instant로 데이터를 모델링하는 것이 의도돼요. 이 클래스는 날짜-시간 개념을 더 자세히 모델링하거나, 데이터베이스나 네트워크 프로토콜과 통신할 때 사용할 수 있어요.

이 클래스는 값 기반(value-based) 클래스예요. 프로그래머는 서로 같은 인스턴스를 교환 가능하게 취급해야 하며, 동기화에 인스턴스를 사용하면 안 돼요. 비교에는 equals 메서드를 사용해야 해요.

주요 메서드

  • now() — 시스템 시계에서 현재 날짜-시간을 얻어요.
  • of(LocalDateTime dateTime, ZoneOffset offset) — 날짜-시간과 오프셋에서 OffsetDateTime 인스턴스를 얻어요.
  • parse(CharSequence text) — ISO-8601 텍스트에서 OffsetDateTime 인스턴스를 얻어요.
  • atZoneSameInstant(ZoneId zone) — 이 날짜-시간을 시간대와 결합해 같은 순간을 보장하는 ZonedDateTime을 만들어요.
  • atZoneSimilarLocal(ZoneId zone) — 이 날짜-시간을 시간대와 결합해 로컬 날짜·시간을 유지하려는 ZonedDateTime을 만들어요.
  • toLocalDateTime() — 이 날짜-시간의 LocalDateTime 부분을 얻어요.
  • getOffset() — '+01:00' 같은 존 오프셋을 얻어요.
  • withOffsetSameInstant(ZoneOffset offset) — 같은 순간을 가진 다른 오프셋의 복사본을 반환해요.
  • toInstant() — 이 날짜-시간을 Instant로 변환해요.

더 알아보기 (Learn more)