[java] Joda-Time과 주목받는 다른 자바 시간 라이브러리

시간과 날짜 처리는 개발자에게 항상 어려운 과제였습니다. 자바에서 기본으로 제공되는 java.util.Datejava.util.Calendar 클래스는 사용하기 번거롭고, 버그가 많아 개발자들에게 큰 불편을 주었습니다.

하지만, 이러한 문제를 해결하기 위해 다양한 시간 라이브러리가 개발되었습니다. Joda-Time은 가장 인기 있는 자바 시간 라이브러리 중 하나이며, 여기서는 Joda-Time과 함께 주목받는 다른 자바 시간 라이브러리 몇 가지를 살펴보겠습니다.

1. Joda-Time

Joda-Time은 JDK 8 이전에 많은 자바 개발자들이 사용한 자바 시간 라이브러리입니다. Joda-Time은 불변 객체를 사용하여 스레드 안전성을 제공하며, 날짜, 시간, 기간, 인터벌 등을 처리하는 다양한 클래스를 제공합니다. 또한 Joda-Time은 DateTimeFormatter를 통해 강력한 형식 지정 기능을 제공하여 문자열과 날짜 사이의 변환 작업을 쉽게 수행할 수 있습니다.

예제 코드:

import org.joda.time.DateTime;
import org.joda.time.Duration;
import org.joda.time.format.DateTimeFormatter;
import org.joda.time.format.ISODateTimeFormat;

public class JodaTimeExample {
    public static void main(String[] args) {
        DateTime dateTime = new DateTime();
        DateTimeFormatter formatter = ISODateTimeFormat.dateTime();
        String formattedDate = formatter.print(dateTime);

        Duration duration = new Duration(1000);
        long milliseconds = duration.getMillis();

        System.out.println("Current date and time: " + formattedDate);
        System.out.println("Duration in milliseconds: " + milliseconds);
    }
}

2. java.time (JSR-310)

JDK 8부터는 java.time 패키지가 추가되었습니다. 이 패키지는 Joda-Time의 영향을 받아 설계되었으며, 여러 가지 향상된 기능과 API를 제공합니다. java.time.LocalDate, java.time.LocalTime, java.time.LocalDateTime, java.time.Duration, java.time.Period 등 다양한 클래스를 통해 날짜와 시간을 처리할 수 있습니다. 또한 java.time.format.DateTimeFormatter 클래스를 사용하여 형식 지정 기능을 수행할 수도 있습니다.

예제 코드:

import java.time.LocalDateTime;
import java.time.Duration;
import java.time.format.DateTimeFormatter;

public class JavaTimeExample {
    public static void main(String[] args) {
        LocalDateTime dateTime = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDate = dateTime.format(formatter);

        Duration duration = Duration.ofSeconds(10);
        long seconds = duration.getSeconds();

        System.out.println("Current date and time: " + formattedDate);
        System.out.println("Duration in seconds: " + seconds);
    }
}

3. ThreeTen-Extra

ThreeTen-Extra는 JDK 8의 java.time 패키지와 함께 사용할 수 있는 추가적인 기능들을 제공하는 라이브러리입니다. 이 라이브러리는 기간, 인터벌, 날짜 변환 등 다양한 기능을 제공합니다. ThreeTen-Extra를 사용하면 java.time 패키지의 제한적인 기능을 보완할 수 있습니다.

예제 코드:

import org.threeten.extra.YearQuarter;
import org.threeten.extra.QuarterYears;

public class ThreeTenExtraExample {
    public static void main(String[] args) {
        YearQuarter yearQuarter = YearQuarter.now();
        QuarterYears quarterYears = QuarterYears.of(10);
        YearQuarter futureYearQuarter = yearQuarter.plus(quarterYears);

        System.out.println("Current year quarter: " + yearQuarter);
        System.out.println("Year quarter after 10 quarters: " + futureYearQuarter);
    }
}

이와 같이 Joda-Time과 java.time 패키지를 포함한 ThreeTen-Extra와 같은 자바 시간 라이브러리를 사용하면 날짜와 시간 처리를 훨씬 간편하게 할 수 있습니다.

더 많은 정보를 원하신다면 아래 참고 자료를 확인해보세요.

참고 자료