목표
- Duration Class는 시간의 구간을 표현한다는 것을 이해한다.
개요
Duration Class는 두 시간 객체 사이의 지속시간(duration)을 만드는 클래스이다. 지속시간이므로, 날짜만으로는 구성이 불가능하다. 즉, Time요소가 들어간 데이터로만 Duration Class의 생성이 가능하다.
즉, 위의 초록색 상자에 들어간 클래스를 이용해서만 Duration Class를 만들 수 있다.
Duration 생성
Duration은 Duration Class 내의 다양한 정적 메서드를 이용해 만들 수 있다.
between 메서드
between 메서드는 두 시간 객체 사이의 차이를 이용해 duration을 만든다.
val localTime1 = LocalTime.of(19, 30, 0);
val localTime2 = LocalTime.of(20, 50, 0);
val duration = Duration.between(localTime1, localTime2);
System.out.println(duration.toString()); // PT1H20M
//P: Period, T: Time을 뜻한다. Period는 공백이고 Time이 1시간 20분이라는 뜻이다.
val localDateTime1 = LocalDateTime.of(2021, 1, 26, 19, 30, 10);
val localDateTime2 = LocalDateTime.of(2021, 3, 26, 19, 30, 10);
val durationLocalDateTime = Duration.between(localDateTime1, localDateTime2);
//PT1416H
*LocalDateTime, LocalTime, Instant는 쓸 수 있지만, 초에 대한 정보가 없는 LocalDate는 between을 쓸 수 없다.
val localDate1 = LocalDate.of(2021, 1, 26);
val localDate2 = LocalDate.of(2021, 3, 26);
val durationLocalDate = Duration.between(localDate1, localDate2);
//Exception in thread "main" java.time.temporal.UnsupportedTemporalTypeException: Unsupported unit: Seconds
of- 메서드
ofDays, ofHours, ofMinutes, ofSeconds는 각 시간에 대한 Duration을 만든다.
Duration duration1 = Duration.ofDays(3); // PT72H
Duration duration2 = Duration.ofHours(12); // PT12H
Duration duration3 = Duration.ofMinutes(30); // PT30M
Duration duration4 = Duration.ofSeconds(10); // PT10S
parse 메서드
문자열을 parse하여 Duration을 만든다.
Duration duration1Parsed = Duration.parse("PT72H");
Duration duration2Parsed = Duration.parse("PT12H");
Duration duration3Parsed = Duration.parse("PT30M");
Duration duration4Parsed = Duration.parse("PT10S");
정리
- Duration 클래스를 만들어내기 위해 시간(초)이 필요하다는 것이 핵심이다.
반응형