Period와 Duration 클래스는 시간의 간격(기간, amount of time)을 표현하는데 사용된다.
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은 시간과 시간의 차이로, 두 시간 사이의 간격을 시, 분, 초, 나노초 단위로 나타낸다.
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
구분 | Duration | Period |
---|---|---|
단위 | 시간, 분, 초, 나노초 | 년, 월, 일 |
사용 대상 | 시간 | 날짜 |
주요 메서드 | toHours(), toMinutes(), getSeconds(), getNano() | getYears(), getMonths(), getDays() |