1. 개요

이 사용방법(예제)에서는 Java를 사용하여 날짜를 하루 씩 증가시키는 방법을 살펴 봅니다. Java 8 이전에는 표준 Java 날짜 및 시간 라이브러리가 사용자 친화적이지 않았습니다. 따라서 Joda-Time은 Java 8 이전에 Java의 사실상 표준 날짜 및 시간 라이브러리가되었습니다.

java.util.Calendar 및 Apache Commons와 같이 작업을 수행하는 데 사용할 수있는 다른 클래스와 라이브러리도 있습니다  .

Java 8에는 이전 라이브러리의 단점을 해결하기 위해 더 나은 날짜 및 시간 API가 포함되었습니다.

따라서 Java 8, Joda-Time API, Java의 Calendar 클래스 및 Apache Commons 라이브러리를 사용하여 날짜를 하루 씩 늘리는 방법을 찾고 있습니다 .

2. Maven 의존성

다음 의존성이 pom.xml 파일에 포함되어야 합니다.

<dependencies>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.10</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.11</version>
    </dependency>
</dependencies>

Maven Central 에서 최신 버전의 Joda-Time Apache Commons Lang 최신 버전을 찾을 수 있습니다 .

3. java.time 사용

java.time.LocalDate의  클래스는 불변의 날짜 - 시간 표현을 종종 년 - 월 - 일로 볼 수 있습니다.

LocalDate  에는 날짜 조작을위한 많은 메서드가 있습니다. 동일한 작업을 수행하는 데 사용할 수있는 방법을 살펴 보겠습니다.

public static String addOneDay(String date) {
    return LocalDate
      .parse(date)
      .plusDays(1)
      .toString();
}

이 예에서는  java.time.LocalDate  클래스와 plusDays ()  메서드를 사용하여 날짜를 하루 씩 증가시킵니다.

이제이 메서드가 예상대로 작동하는지 확인하겠습니다.

@Test
public void givenDate_whenUsingJava8_thenAddOneDay() 
  throws Exception {
 
    String incrementedDate = addOneDay("2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

4. java.util.Calendar 사용

또 다른 접근법은  java.util.Calendar  및 해당 add ()  메소드를 사용하여 날짜를 증가시키는 것입니다.

날짜 형식화를 위해 java.text.SimpleDateFormat  과 함께 사용  합니다.

public static String addOneDayCalendar(String date) 
  throws ParseException {
 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.setTime(sdf.parse(date));
    c.add(Calendar.DATE, 1);
    return sdf.format(c.getTime());
}

java.text.SimpleDateFormat  은 예상 날짜 형식이 사용되는지 확인하기 위해 있습니다. 날짜는 add ()  메서드 를 통해 증가합니다 .

다시 한 번이 접근 방식이 의도 한대로 작동하는지 확인해 보겠습니다.

@Test
public void givenDate_whenUsingCalendar_thenAddOneDay() 
  throws Exception {
 
    String incrementedDate = addOneDayCalendar("2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

5. Joda-Time 사용

org.joda.time.DateTime의  클래스는 도움이 제대로 날짜와 시간을 처리하는 많은 방법이있다.

이를 사용하여 날짜를 하루 씩 늘리는 방법을 살펴 보겠습니다.

public static String addOneDayJodaTime(String date) {
    DateTime dateTime = new DateTime(date);
    return dateTime
      .plusDays(1)
      .toString("yyyy-MM-dd");
}

여기서는  org.joda.time.DateTime  클래스와 plusDays ()  메서드를 사용하여 날짜를 하루 씩 증가시킵니다.

위의 코드가 다음 단위 테스트에서 작동하는지 확인할 수 있습니다.

@Test
public void givenDate_whenUsingJodaTime_thenAddOneDay() throws Exception {
    String incrementedDate = addOneDayJodaTime("2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

6. Apache Commons 사용 

날짜 조작에 일반적으로 사용되는 또 다른 라이브러리는 Apache Commons입니다. java.util.Calendarjava.util.Date 객체 의 사용을 둘러싼 유틸리티 모음입니다  .

작업을 위해 org.apache.commons.lang3.time.DateUtils  클래스와 해당  addDays ()  메서드를 사용할 수 있습니다 ( SimpleDateFormat 이 다시 날짜 형식에 사용됨).

public static String addOneDayApacheCommons(String date) 
  throws ParseException {
 
    SimpleDateFormat sdf
      = new SimpleDateFormat("yyyy-MM-dd");
    Date incrementedDate = DateUtils
      .addDays(sdf.parse(date), 1);
    return sdf.format(incrementedDate);
}

평소처럼 단위 테스트를 통해 결과를 확인합니다.

@Test
public void givenDate_whenUsingApacheCommons_thenAddOneDay()
  throws Exception {
 
    String incrementedDate = addOneDayApacheCommons(
      "2018-07-03");
    assertEquals("2018-07-04", incrementedDate);
}

7. 결론

이 빠른 기사에서는 날짜를 하루 씩 증가시키는 간단한 작업을 처리하는 다양한 접근 방식을 살펴 보았습니다. Java의 핵심 API와 일부 인기있는 타사 라이브러리를 사용하여이를 수행하는 방법을 보여주었습니다.

이 기사에 사용 된 코드 샘플 은 GitHub 에서 찾을 수 있습니다  .