Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 String 값을 Date 객체로 변환하는 4가지 방법

Java 개발을 하다 보면 문자열 형태의 날짜 값을 Date 객체로 변환해야 하는 경우가 자주 발생합니다. 이 글에서는 가장 많이 사용되는 네 가지 변환 방법을 예제 코드와 함께 정리했습니다.

1. SimpleDateFormat 클래스 사용하기

SimpleDateFormat 클래스의 생성자 중 하나는 원하는 날짜 형식을 나타내는 문자열을 인자로 받아 객체를 생성합니다. 문자열을 Date 객체로 파싱(변환)하는 절차는 다음과 같습니다.

  • 원하는 형식 문자열을 전달하여 SimpleDateFormat 객체를 생성합니다.
  • parse() 메서드를 사용해 날짜 문자열을 Date 객체로 변환합니다.

예제

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Sample {
    public static void main(String args[]) throws ParseException {
        String date_string = "2007-25-06";
        // SimpleDateFormat 클래스 객체 생성
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-dd-MM");
        // 주어진 문자열을 Date 객체로 파싱
        Date date = formatter.parse(date_string);
        System.out.println("Date value: " + date);
    }
}

출력 결과

Date value: Mon Jun 25 00:00:00 IST 2007

2. LocalDate 클래스 사용하기

Java 8부터 도입된 java.time 패키지의 LocalDate 클래스는 parse() 메서드를 제공합니다. 이 메서드는 날짜를 나타내는 문자열을 인자로 받아 LocalDate 객체를 반환하며, 기본적으로 ISO-8601 형식(yyyy-MM-dd)의 문자열을 처리할 수 있습니다.

예제

import java.time.LocalDate;
public class Test {
    public static void main(String args[]) {
        LocalDate date = LocalDate.parse("2007-12-03");
        System.out.println(date);
    }
}

출력 결과

2007-12-03

3. DateUtils 클래스 사용하기

Apache Commons Lang 라이브러리의 DateUtils 클래스는 날짜 처리에 유용한 유틸리티를 제공합니다. 아래는 해당 패키지의 Maven 의존성 설정입니다.

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.7</version>
</dependency>

DateUtils 클래스의 parseDate() 메서드는 날짜 문자열과 형식 문자열을 인자로 받아 Date 객체를 반환합니다. 여러 개의 형식을 배열로 전달하면 순서대로 시도하여 일치하는 형식으로 파싱한다는 장점도 있습니다.

예제

import java.util.Date;
import org.apache.commons.lang3.time.DateUtils;
public class Test {
    public static void main(String args[]) throws Exception {
        String dateInString = "2013-07-06";
        Date date = DateUtils.parseDate(dateInString, "yyyy-MM-dd");
        System.out.println(date);
    }
}

출력 결과

Sat Jul 06 00:00:00 IST 2013

4. Instant 클래스 사용하기

java.time.Instant 클래스의 parse() 메서드는 날짜·시간 문자열을 인자로 받아 해당 시점을 나타내는 Instant 객체를 반환합니다. ISO-8601 표준(예: yyyy-MM-ddTHH:mm:ssZ) 형식의 문자열을 처리하며, 타임스탬프나 UTC 기반 시간을 다룰 때 유용합니다.

예제

import java.time.Instant;
public class Test {
    public static void main(String args[]) {
        String dateInString = "2014-10-05T15:23:01Z";
        Instant instant = Instant.parse(dateInString);
        System.out.println(instant);
    }
}

출력 결과

2014-10-05T15:23:01Z

정리

레거시 코드나 구버전 Java 환경이라면 SimpleDateFormat을, Java 8 이상이라면 스레드 세이프하고 직관적인 LocalDate 또는 Instant 사용을 권장합니다. 유연한 형식 지정이 필요한 경우 Apache Commons Lang의 DateUtils도 좋은 선택지입니다.