본문 바로가기
JAVA

Java Duration and Period Class

by oncerun 2023. 2. 23.
반응형

소개

Duration과 Period 클래스는 자바 8에서 추가된 클래스로, 시간과 날짜 사이의 간격을 나타내기 위해 사용됩니다. 이들 클래스는 자바에서 시간과 날짜를 다루는데 매우 유용하며, 다양한 상황에서 사용될 수 있습니다.

Duration 클래스

Duration 클래스는 두 시간 사이의 간격을 나타내기 위해 사용되는 클래스입니다. 이 클래스는 시간을 나노초 단위로 표현하며, 다음과 같은 방법으로 사용할 수 있습니다.

Duration threeMinutes = Duration.ofMinutes(3);
Duration twoHours = Duration.ofHours(2);
Duration tenSeconds = Duration.ofSeconds(10);

Duration 클래스는 두 시간 사이의 차이를 계산하거나, 특정 시간만큼 더하거나 빼는 등의 연산을 수행할 수 있습니다.

Duration d1 = Duration.between(LocalTime.of(10, 0), LocalTime.of(11, 30));
Duration d2 = Duration.ofMinutes(30);
Duration d3 = d1.plus(d2); // 11:00 AM

Period 클래스

Period 클래스는 두 날짜 사이의 간격을 나타내기 위해 사용되는 클래스입니다. 이 클래스는 년, 월, 일 단위로 날짜 간격을 표현합니다. 다음과 같은 방법으로 사용할 수 있습니다.

Period oneYearTwoMonthsThreeDays = Period.of(1, 2, 3);

Period 클래스는 LocalDate와 함께 사용되며, 두 날짜 사이의 차이를 계산하거나, 특정 날짜만큼 더하거나 빼는 등의 연산을 수행할 수 있습니다.

LocalDate start = LocalDate.of(2022, 1, 1);
LocalDate end = LocalDate.of(2022, 6, 30);
Period period = Period.between(start, end);
int months = period.getMonths(); // 5
LocalDate newDate = start.plus(period); // 2022-06-30

Duration과 Period 클래스의 차이

Duration 클래스와 Period 클래스는 모두 시간과 날짜 간격을 나타내는 클래스이지만, 그 차이점이 존재합니다. Duration 클래스는 두 시간 사이의 간격을 나타내는 반면에 Period 클래스는 두 날짜 사이의 간격을 나타냅니다. 따라서, Duration 클래스는 시간 관련 작업에 주로 사용되며, Period 클래스는 날짜 관련 작업에 주로 사용됩니다.

Java 11에 추가된 Duration 클래스 메소드

Duration.parse()

Duration.parse() 메서드는 문자열로 표시된 Duration 객체를 파싱하여 Duration 객체로 변환합니다. 이전에는 Duration 객체를 생성할 때 ofSeconds()나 ofMinutes() 등의 메소드를 사용해야 했지만, 이제는 문자열로 쉽게 파싱할 수 있습니다.

Duration duration = Duration.parse("PT3M"); // 3분을 나타내는 Duration 객체를 생성

Duration.parse() 메서드는 ISO 8601 표준에 따라 파싱됩니다. Duration 객체를 문자열로 표시할 때도 ISO 8601 표준을 따라 표시할 수 있습니다.

Duration duration = Duration.ofMinutes(3);
String durationString = duration.toString(); // "PT3M"

Duration.between()

Duration.between() 메소드는 두 시간 사이의 차이를 계산하여 Duration 객체를 반환합니다. 이 메소드는 Instant 또는 LocalTime 객체를 매개변수로 받습니다.

Duration d1 = Duration.between(LocalTime.of(10, 0), LocalTime.of(11, 30));
Duration d2 = Duration.between(Instant.now(), Instant.now().plusSeconds(60));

Duration.ofDays(), Duration.ofHours(), Duration.ofMinutes(), Duration.ofSeconds()

Duration.ofDays(), Duration.ofHours(), Duration.ofMinutes(), Duration.ofSeconds() 메소드는 각각 일, 시간, 분, 초 단위의 Duration 객체를 생성합니다.

Duration oneDay = Duration.ofDays(1);
Duration twoHours = Duration.ofHours(2);
Duration tenSeconds = Duration.ofSeconds(10);

마무리

Duration과 Period 클래스는 자바에서 시간과 날짜 간격을 다룰 때 매우 유용합니다. Duration 클래스는 시간 간격을 나타내며, Period 클래스는 날짜 간격을 나타냅니다. 이들 클래스를 잘 활용하면, 시간과 날짜 관련 작업을 더욱 쉽게 처리할 수 있습니다.

반응형

'JAVA' 카테고리의 다른 글

Records  (0) 2023.07.11
ZGC (HotSpot)  (0) 2023.07.11
Code Cache  (1) 2023.02.18
Java 11 HttpClient Class  (0) 2022.12.13
S3 다중 업로드를 병렬로 처리 시 발생할 수 있는 문제..(CountDownLatch)  (0) 2022.12.03

댓글