java.time, java.util, java.sql 및 java.text 패키지에는 날짜와 시간을 나타내는 클래스가 포함되어 있습니다. 다음 클래스는 Java에서 날짜를 처리하는 데 중요합니다.
자바 8 날짜/시간 API
Java는 Java 8부터 새로운 날짜 및 시간 API를 도입했습니다. java.time 패키지에는 Java 8 날짜 및 시간 클래스가 포함되어 있습니다.
- java.time.LocalDate 클래스
- java.time.LocalTime 클래스
- java.time.LocalDateTime 클래스
- java.time.MonthDay 클래스
- java.time.OffsetTime 클래스
- java.time.OffsetDateTime 클래스
- java.time.Clock 클래스
- java.time.ZonedDateTime 클래스
- java.time.ZoneId 클래스
- java.time.ZoneOffset 클래스
- java.time.Year 클래스
- java.time.YearMonth 클래스
- java.time.Period 클래스
- java.time.Duration 클래스
- java.time.Instant 클래스
- java.time.DayOfWeek 열거형
- java.time.Month 열거형
기존 날짜/시간 API
그러나 기존 또는 기존 Java Date API도 유용합니다. 기존 날짜 및 시간 클래스 목록을 살펴보겠습니다.
- java.util.Date 클래스
- java.sql.Date 클래스
- java.util.Calendar 클래스
- java.util.GregorianCalendar 클래스
- java.util.TimeZone 클래스
- java.sql.Time 클래스
- java.sql.Timestamp 클래스
날짜 및 시간 형식 지정
다음 클래스를 사용하여 Java에서 날짜와 시간의 형식을 지정할 수 있습니다.
Java 날짜 및 시간 API
Java는 java.time 및 java.util 두 패키지의 도움으로 날짜 및 시간 기능을 제공합니다. Java 8에는 java.time 패키지가 도입되었으며 새로 도입된 클래스는 기존 java.util.Date 및 java.util.Calendar 클래스의 단점을 극복하려고 시도합니다.
기존 날짜 시간 API 클래스
Java 8 릴리스 이전의 기본 클래스는 다음과 같습니다.
굵은 글씨용 CSS
Java.lang.시스템: 이 클래스는 현재 시간을 밀리초 단위로 반환하는 currentTimeMillis() 메서드를 제공합니다. 1970년 1월 1일부터 현재 날짜와 시간을 밀리초 단위로 표시합니다.
java.util.날짜: 특정 시간 순간을 밀리초 단위로 표시하는 데 사용됩니다.
java.util.캘린더: 인스턴스 간 변환과 달력 필드를 다양한 방식으로 조작하기 위한 메서드를 제공하는 추상 클래스입니다.
java.text.SimpleDate형식: 미리 정의된 방식이나 사용자 정의 패턴으로 날짜의 형식을 지정하고 구문 분석하는 데 사용되는 클래스입니다.
java.util.TimeZone: 시간대 오프셋을 나타내며 일광 절약 시간제도 계산합니다.
기존 날짜/시간 API의 단점
Java 8의 새로운 날짜 시간 API
새로운 날짜 API는 위에서 언급한 레거시 클래스의 단점을 극복하는 데 도움이 됩니다. 여기에는 다음 클래스가 포함됩니다.
java.time.LocalDate: ISO 달력의 연월일을 나타내며 시간 없이 날짜를 나타내는 데 유용합니다. 생년월일, 결혼일 등 날짜 정보만 표현하는 데 사용할 수 있습니다.
java.time.LocalTime: 시간에만 거래됩니다. 영화 상영 시간이나 지역 도서관의 개관 및 폐관 시간과 같이 인간 기반의 시간을 나타내는 데 유용합니다.
java.time.LocalDateTime: 시간대 없이 날짜와 시간을 모두 처리합니다. LocalDate와 LocalTime의 조합입니다.
java.time.ZonedDateTime: LocalDateTime 클래스를 ZoneId 클래스에 제공된 구역 정보와 결합합니다. 이는 시간대 정보와 함께 완전한 날짜 타임스탬프를 나타냅니다.
java.time.OffsetTime: 시간대 ID 없이 그리니치/UTC에서 해당 시간대 오프셋을 사용하여 시간을 처리합니다.
java.time.OffsetDateTime: 시간대 ID 없이 그리니치/UTC에서 해당 시간대 오프셋을 사용하여 날짜 및 시간을 처리합니다.
java.time.Clock : 특정 시간대의 현재 순간, 날짜 및 시간에 대한 액세스를 제공합니다. Clock 클래스 사용은 선택 사항이지만 이 기능을 사용하면 다른 시간대에 대해 또는 시간이 변경되지 않는 고정 시계를 사용하여 코드를 테스트할 수 있습니다.
java.time.Instant : 이는 타임라인(EPOCH 이후)에서 나노초의 시작을 나타내며 기계 시간을 나타내는 타임스탬프를 생성하는 데 유용합니다. 에포크 이전에 발생하는 순간은 음수 값을 갖고, 에포크 이후에 발생하는 순간은 양수 값을 갖습니다.
java.time.Duration : 두 순간의 차이는 초 또는 나노초 단위로 측정되며 연도, 월, 일과 같은 날짜 기반 구성을 사용하지 않지만 클래스는 일, 시간, 분으로 변환하는 메서드를 제공합니다.
java.time.Period : 날짜 기반 값(년, 월, 일)에서 날짜 간의 차이를 정의하는 데 사용됩니다.
java.time.ZoneId : 이는 시간대 식별자를 명시하고 Instant와 LocalDateTime 간의 변환 규칙을 제공합니다.
java.time.ZoneOffset : 그리니치/UTC 시간과의 시간대 오프셋을 설명합니다.
java.time.format.DateTimeFormatter : 미리 정의된 다양한 포맷터가 제공되거나 우리가 직접 정의할 수도 있습니다. 날짜 시간 값을 구문 분석하고 형식을 지정하는 구문 분석() 또는 형식() 메서드가 있습니다.