Image
Kotlin/Time

[Kotlin Duration Class] 시간의 구간을 표현하는 클래스

목표

  • Duration Class는 시간의 구간을 표현한다는 것을 이해한다.

개요

Duration Class는 두 시간 객체 사이의 지속시간(duration)을 만드는 클래스이다. 지속시간이므로, 날짜만으로는 구성이 불가능하다. 즉, Time요소가 들어간 데이터로만 Duration Class의 생성이 가능하다.

 

그림1. Duration을 만들 수 있는 클래스

 즉, 위의 초록색 상자에 들어간 클래스를 이용해서만 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 클래스를 만들어내기 위해 시간(초)이 필요하다는 것이 핵심이다.
반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com