Java 8에는 java.time 패키지 아래에 새로운 시간 및 날짜 API 세트가 포함되어 있습니다. 다음은 Java 8의 새로운 기능 날짜 API에 대한 관련 지식을 설명하기 위해 예제를 사용합니다. 관심 있는 친구들은 함께 살펴보세요
Java 8에는 java.time 패키지 아래에 새로운 시간 및 날짜 API 세트가 포함되어 있습니다. 다음 예는 이 새로운 API 세트의 가장 중요한 부분 중 일부를 보여줍니다.
1.Clock Clock 클래스는 현재 날짜 및 시간에 액세스하는 방법을 제공하며 시간대를 구분하며 시스템을 대체하는 데 사용할 수 있습니다. currentTimeMillis()를 사용하여 현재 마이크로초 수를 가져옵니다. 특정 시점은 Instant 클래스를 사용하여 나타낼 수도 있으며, 이는 이전 java.util.Date 객체를 생성하는 데에도 사용할 수 있습니다.
Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
2. 시간대 시간대
새 API에서 시간대는 ZoneId로 표시됩니다. 시간대는 정적 방법을 사용하여 쉽게 얻을 수 있습니다. 시간대는 UTS 시간과의 시차를 정의하며 인스턴트 시간 개체와 현지 날짜 개체 간에 변환할 때 매우 중요합니다.
System.out.println(ZoneId.getAvailableZoneIds()); // prints all available timezone ids ZoneId zone1 = ZoneId.of("Europe/Berlin"); ZoneId zone2 = ZoneId.of("Brazil/East"); System.out.println(zone1.getRules()); System.out.println(zone2.getRules()); // ZoneRules[currentStandardOffset=+01:00] // ZoneRules[currentStandardOffset=-03:00]
3.LocalTime 현지 시간
LocalTime은 오후 10시 또는 17:30:15와 같이 시간대 정보가 없는 시간을 정의합니다. 다음 예제에서는 이전 코드에서 생성된 시간대를 사용하여 두 개의 현지 시간을 생성합니다. 그런 다음 시간을 비교하고 두 시간 사이의 시간 차이를 시간과 분 단위로 계산합니다.
LocalTime now1 = LocalTime.now(zone1); LocalTime now2 = LocalTime.now(zone2); System.out.println(now1.isBefore(now2)); // false long hoursBetween = ChronoUnit.HOURS.between(now1, now2); long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); System.out.println(hoursBetween); // -3 System.out.println(minutesBetween); // -239LocalTime은 시간 문자열 구문 분석을 포함하여 객체 생성을 단순화하는 다양한 팩토리 메서드를 제공합니다.
LocalTime localTime= LocalTime.of(23, 59, 59); System.out.println(localTime); // 23:59:59 DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedTime(FormatStyle.SHORT) .withLocale(Locale.GERMAN); LocalTime leetTime = localTime.format(germanFormatter); System.out.println(leetTime);
4.LocalDate 현지 날짜
LocalDate는 2014-03-11과 같은 정확한 날짜를 나타냅니다. 객체 값은 변경할 수 없으며 사용법은 기본적으로 LocalTime과 동일합니다. 다음 예에서는 Date 객체에 일/월/년을 더하고 빼는 방법을 보여줍니다. 또한 이러한 객체는 변경할 수 없으며 작업은 항상 새 인스턴스를 반환합니다.
LocalDate today = LocalDate.now(); LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); LocalDate yesterday = tomorrow.minusDays(2); LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); System.out.println(dayOfWeek); // FRIDAY문자열에서 LocalDate 유형을 구문 분석하는 것은 LocalTime을 구문 분석하는 것만큼 간단합니다.
DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedDate(FormatStyle.MEDIUM) .withLocale(Locale.GERMAN); LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); System.out.println(xmas); // 2014-12-24
5.LocalDateTime 현지 날짜 및 시간
LocalDateTime은 시간과 날짜를 모두 나타냅니다. 처음 두 섹션 내용이 하나의 개체로 병합됩니다. LocalTime 및 LocalDate와 마찬가지로 LocalDateTime은 변경할 수 없습니다. LocalDateTime은 특정 필드에 액세스하는 몇 가지 방법을 제공합니다.
LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); System.out.println(dayOfWeek); // WEDNESDAY Month month = sylvester.getMonth(); System.out.println(month); // DECEMBER long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); System.out.println(minuteOfDay); // 1439타임존 정보만 추가하면 시점 Instant 객체로 변환 가능합니다. Instant 시점 객체는 구식 java.util로 쉽게 변환할 수 있습니다. .날짜.
Instant instant = sylvester .atZone(ZoneId.systemDefault()) .toInstant(); Date legacyDate = Date.from(instant); System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014LocalDateTime 형식 지정은 시간 및 날짜 형식 지정과 동일합니다. 미리 정의된 형식을 사용하는 것 외에도 형식을 직접 정의할 수도 있습니다.
DateTimeFormatter formatter = DateTimeFormatter .ofPattern("MMM dd, yyyy - HH:mm"); LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); String string = formatter.format(parsed); System.out.println(string); // Nov 03, 2014 - 07:13java.text.NumberFormat과의 차이점은 새로운 것입니다. DateTimeFormatter는 변경할 수 없으므로 스레드로부터 안전합니다.
위 내용은 Java 8의 새로운 기능인 날짜 API의 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!