[Java] Period, Duration 클래스

Yujeong·2024년 6월 16일
0

Java

목록 보기
16/22
post-thumbnail

Period와 Duration 클래스는 시간의 간격(기간, amount of time)을 표현하는데 사용된다.

Period

Period는 날짜와 날짜의 차이로, 두 날짜 사이의 간격을 년, 월, 일 단위로 나타낸다.

  • 프로젝트의 기간: 프로젝트 시작일과 종료일 사이의 간격
  • 기념일까지 남은 기간: 현재 날짜와 기념일 사이의 간격
public final class Period
        implements ChronoPeriod, Serializable {
	...
    private final int years;
    private final int months;
    private final int days;
    ...
}

메서드

메서드설명
of(int years, int months, int days)년, 월, 일의 기간을 나타내는 Period 인스턴스 반환
between(LocalDate startDate, LocalDate endDate)두 날짜 사이의 기간을 계산하여 Period 인스턴스 반환
getYears()기간의 년 단위 반환
getMonths()기간의 월 단위 반환
getDays()기간의 일 단위 반환
plus(Period other)다른 Period 객체와의 합산 결과 반환

사용해보기

public class PeriodMain {

	public static void main(string[] args) {
    	// 1. 생성
        Period period = Period.ofDays(13);
        System.out.println("peirod: " + period);
        
        // 2. 계산
        LocalDate date = Localdate.of(2024, 6, 6);
        Localdate plusDate = date.plus(period);
        System.out.println("current date: " + date);
        System.out.println("plus date " + plusDate);
        
        // 3. 기간
        LocalDate startDate = LocalDate.of(2024, 6, 6);
        LocalDate endDate = LocalDate.of(2024, 6, 16);
        Period bt = Period.between(startdate, endDate);
        System.out.println("period: " + bt.getMonths() "months, " + bt.getDays() + "days");
    }
}
period: P13D
current date: 2024-06-06
plus date 2024-06-19
period: 0months, 10days

Duration

Duration은 시간과 시간의 차이로, 두 시간 사이의 간격을 시, 분, 초, 나노초 단위로 나타낸다.

  • 컵라면을 끓이는 시간: 3분
  • 영화 상영 시간: 1시간 50분
public final class Duration
        implements TemporalAmount, Comparable<Duration>, Serializable {
    ...
    private final long seconds;
    private final int nanos;
    ...
}

메서드

메서드설명
ofDays(long days)일 수의 기간을 나타내는 Duration 인스턴스 반환
ofHours(long hours)시간 수의 기간을 나타내는 Duration 인스턴스 반환
ofMinutes(long minutes)분 수의 기간을 나타내는 Duration 인스턴스 반환
between(Temporal startInclusive, Temporal endExclusive)두 시간 사이의 기간을 계산하여 Duration 인스턴스 반환
plus(Duration duration)다른 Duration 객체와의 합산 결과 반환
toMinutes()전체 기간을 분 단위로 변환하여 반환
toHours()기간을 시간 단위로 변환하여 반환
toMinutesPart()기간의 분 부분만 반환

사용해보기

public class DurationMain {

	public static void main(String[] args) {
        // 1. 생성
        Duration duration = Duration.ofMinutes(20);
        System.out.println("duration: " + duration);

        LocalTime time = LocalTime.of(1,0);
        System.out.println("time: " + time);

        // 2. 계산
        LocalTime plusMinute = time.plus(duration);
        System.out.println("plus minutes: " + plusMinute);

        LocalTime plusSecond = plusMinute.plusSeconds(30);
        System.out.println("plus seconds: " + plusSecond);

        // 3. 시간 차이
        LocalTime time1 = LocalTime.of(7, 20);
        LocalTime time2 = LocalTime.of(14,50);
        Duration bt = Duration.between(time1, time2);

        System.out.println("duration in seconds: " + bt.getSeconds() + "seconds");
        System.out.println("duration: " + bt.toHours() + " hours " + bt.toMinutesPart() + " minutes");
    }
}
duration: PT20M
time: 01:00
plus minutes: 01:20
plus seconds: 01:20:30
duration in seconds: 27000seconds
duration: 7 hours 30 minutes

정리

구분DurationPeriod
단위시간, 분, 초, 나노초년, 월, 일
사용 대상시간날짜
주요 메서드toHours(), toMinutes(), getSeconds(), getNano()getYears(), getMonths(), getDays()

참고
Class Duration
Class Period
Java의 정석
김영한의 실전 자바 - 중급 1편

profile
공부 기록

0개의 댓글

관련 채용 정보