문자열을 Date,LocalDate,LocalDateTime으로 변환하기

윤재열·2022년 11월 20일
0

Java

목록 보기
66/71

Java 8 이전에는 Date,Calendar 포멧터로는 SimpleDateForamt
Java 8 이후에는 LocalDate,LocalTime,LocalDateTime 포멧터로는 DateTimeFormatter를 사용합니다.

String -> Date

  • Date 객체를 포맷팅하여 출력하기 위해 SimpleDateFormat 클래스를 사용합니다.
  • 문자열을 포멧에 맞추어 읽어들인 다음, Date 객체로 변환할 때도, SimpleDateFormat 클래스를 사용합니다.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
 
public class StringToDate {
    public static void main(String[] args) throws ParseException {
 
        // 문자열
        String dateStr = "2021년 06월 19일 21시 05분 07초";
 
        // 포맷터
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
 
        // 문자열 -> Date
        Date date = formatter.parse(dateStr);
 
        System.out.println(date); // Sat Jun 19 21:05:07 KST 2021
    }
}

설명

SimpleDateFormat formatter = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
  • SimpleDateFormat 클래스를 이용하여, 문자열을 어떻게 parsing하여 읽어들일지 정의합니다.
  • 파라미터 문자열에 사용된 yyyy,MM,dd,HH,mm,ss는 포멧에 맞추어 읽어들인 문자가 어떤 의미인지를 나타냅니다.

String -> LocalDateTime

  • LocalDateTime을 원하는 포멧으로 출력하기 위해, DateTimeForamtter 클래스를 이용했던 것과 같이, 문자열을 LocalDateTime으로 변경할때도 문자열을 포멧에 맞추어 읽어들이기 위하여 DateTimeFormatter 클래스를 사용합니다.
import java.text.ParseException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
 
public class StringToDate {
    public static void main(String[] args) throws ParseException {
 
        // 문자열
        String dateStr = "2021년 06월 19일 21시 05분 07초";
 
        // 포맷터
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 ss초");
 
        // 문자열 -> Date
        LocalDateTime date = LocalDateTime.parse(dateStr, formatter);
 
        System.out.println(date); // 2021-06-19T21:05:07
    }
}

이제 String 타입을 Date,LocalDateTime으로 변환을 했으나, Date -> LocalDate,LocalDateTime으로도 변환을 해야할 수도 있습니다.

Date -> Instant -> ZonedDateTime ->LocalDate,LocalDateTime

  • Date를 LocalDate 또는 LocalDateTime으로 변환하기 위해서는 다음의 3단계를 거칩니다.
      1. Date -> Instant
      1. Instant -> ZonedDateTime
      1. ZonedDateTime -> LocalDate,LocalDateTime
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
 
public class DateToLocalDateTime {
    public static void main(String[] args) {
        
        // 1. Date 객체 생성 (현재날짜)
        Date date = new Date();
 
        // 2. Date -> LocalDate
        LocalDate localDate = date.toInstant()   // Date -> Instant
                .atZone(ZoneId.systemDefault())  // Instant -> ZonedDateTime
                .toLocalDate(); // ZonedDateTime -> LocalDate
 
        // 3. Date -> LocalDateTime
        LocalDateTime localDateTime = date.toInstant() // Date -> Instant
                .atZone(ZoneId.systemDefault()) // Instant -> ZonedDateTime
                .toLocalDateTime(); // ZonedDateTime -> LocalDateTime
 
        // 4. Date, LocalDate, LocalDateTime 출력
        System.out.println(date);  // Sun Jun 20 21:09:20 KST 2021
        System.out.println(localDate);  // 2021-06-20
        System.out.println(localDateTime);  // 2021-06-20T21:09:20.461
    }
}

Date -> Date,TimeStamp -> LocalDate, LocalDateTime

  • Date 객체를 java.sql.Date 또는 java.sql.Timestamp 객체로 변환한 뒤 toLocalDate(), toLocalDateTime()을 사용할 수도 있습니다.

Date 를 LocalDate로 변환하기

  • java.util.Date -> java.sql.Date
  • java.sql.Date -> LocalDate

Date 를 LocalDateTime으로 변환하기

  • java.util.Date -> java.sql.Timestamp
  • java.sql.Timestamp -> LocalDateTime
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Date;
 
public class DateToLocalDateTime {
    public static void main(String[] args) {
        
        // 1. Date 객체 생성 (현재날짜)
        Date date = new Date();
 
        // 2. Date -> LocalDate
        LocalDate localDate = new java.sql.Date(date.getTime())  // java.util.Date -> java.sql.Date
                .toLocalDate();  // java.sql.Date -> LocalDate
 
        // 3. Date -> LocalDateTime
        LocalDateTime localDateTime = new java.sql.Timestamp(date.getTime())  // java.util.Date -> java.sql.Timestamp
                .toLocalDateTime();  // java.sql.Timestamp -> LocalDateTime
 
        // 4. Date, LocalDate, LocalDateTime 출력
        System.out.println(date);  // Sun Jun 20 21:09:20 KST 2021
        System.out.println(localDate);  // 2021-06-20
        System.out.println(localDateTime);  // 2021-06-20T21:09:20.461
    }
}
profile
블로그 이전합니다! https://jyyoun1022.tistory.com/

0개의 댓글