[java] 자바 8부터 추가된 기간(Period) 클래스의 활용 방법

자바 8부터 기간을 표현하고 다루기 위해 Period 클래스가 추가되었습니다. Period 클래스는 년, 월, 일 단위의 기간을 나타내는 클래스로, 날짜와 관련된 연산을 수행할 때 유용하게 사용될 수 있습니다.

Period 클래스의 활용 방법을 살펴보겠습니다.

  1. Period 객체 생성 Period 클래스의 인스턴스를 생성하기 위해서는 Period.of 메서드를 사용합니다. 이 메서드는 두 개의 매개변수를 받으며, 첫 번째 매개변수는 년, 월, 일 단위의 기간을 지정하고, 두 번째 매개변수는 명시적으로 지정하지 않을 경우 기본 값으로 1을 가집니다.

    Period period = Period.of(1, 2, 3); // 1년 2개월 3일
    

    위의 코드는 1년 2개월 3일을 나타내는 Period 객체를 생성합니다.

  2. Period 객체의 값 읽기 Period 객체의 년, 월, 일 값을 읽기 위해서는 get 메서드를 사용합니다. get 메서드는 ChronoUnit 열거 상수를 인수로 받아 그에 해당하는 값을 리턴합니다. 또한, Period 클래스는 각 필드에 해당하는 상수를 정의하고 있으므로, 필드의 이름으로 값을 읽을 수도 있습니다.

    int years = period.get(ChronoUnit.YEARS); // 년 수
    int months = period.get(ChronoUnit.MONTHS); // 월 수
    int days = period.get(ChronoUnit.DAYS); // 일 수
       
    int years = period.getYears();
    int months = period.getMonths();
    int days = period.getDays();
    

    위의 코드는 Period 객체에서 년, 월, 일 값을 읽어오는 방법을 보여줍니다.

  3. Period 객체의 값 변경 Period 객체의 년, 월, 일 값을 변경하기 위해서는 with 메서드를 사용합니다. with 메서드는 ChronoUnit 열거 상수와 새로운 값을 인수로 받아 변경된 Period 객체를 리턴합니다. 또한, Period 클래스는 각 필드에 해당하는 with 메서드를 정의하고 있으므로, 필드의 이름으로 값을 변경할 수도 있습니다.

    Period newPeriod = period.with(ChronoUnit.YEARS, 2); // 년 수를 2로 변경
    Period newPeriod = period.withYears(2);
    

    위의 코드는 Period 객체의 년 값을 2로 변경하는 예시입니다.

  4. Period 객체의 합산 및 차이 계산 Period 객체를 합산하거나 차이를 계산하기 위해서는 plus와 minus 메서드를 사용합니다. 이 메서드는 Period 객체와 Duration 객체를 인수로 받으며, 기존 객체에 해당 값을 추가하거나 뺀 새로운 Period 객체를 리턴합니다.

    Period sumPeriod = period.plus(Period.of(1, 1, 1)); // period에 1년 1개월 1일을 더한 결과
    Period diffPeriod = period.minus(Period.of(0, 1, 1)); // period에서 1개월 1일을 뺀 결과
    

    위의 코드는 Period 객체와 다른 Period 객체를 합산하거나 차이를 계산하는 방법을 보여줍니다.

Period 클래스는 날짜와 관련된 연산을 간편하게 수행할 수 있도록 도와주는 유용한 클래스입니다. 이를 활용하여 날짜를 다루는 로직을 보다 쉽게 구현할 수 있습니다.

더 자세한 내용은 Java 공식 문서를 참고하시기 바랍니다.