Java Date - 날짜와 시간을 문자열 파싱하고 포맷팅하기
포맷과 파싱에 대해 용어부터 알아보자
- 포맷팅
- 날짜와 시간 데이터를 원하는 포맷의 문자열로 변경하기
- 예. Date 객체 -> String 객체
- 파싱
- 날짜의 문자열을 날짜와 시간 데이터로 변환하기
- String 객체 -> Date 객체
Date 객체로 날짜 표기해보기
Date 객체를 만들어 날짜로 표기한다.
LocalDate date = LocalDate.of(2025,12,31);
System.out.println(date);
System.out.println(date.getYear() + "년 " + date.getMonthValue() + "월 " + date.getDayOfMonth() + "일");
2025-12-31
2025년 12월 31일
한글 날짜 표현에는 getYear(), getMonthValue() 등등 메소드를 사용하여 표현하였는데 포맷팅하여 쉽게 표현하는 방법이 있다.
DateTimeFormatter
// 포맷팅 Date 객체를 String 객체로
LocalDate date = LocalDate.of(2025,12,31);
System.out.println(date);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일");
String strDate = date.format(formatter);
System.out.println(strDate);
2025-12-31
2025년 12월 31일
strDate 라는 문자열로 날짜를 표기해주는 것을 볼 수 있다.
LocalDate.parse - 패턴을 가져와 날짜 문자열을 파싱한다.
// 파싱 String 객체를 Date 객체로
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일");
String strDate = "2033년 11월 15일";
LocalDate parseDate = LocalDate.parse(strDate, formatter);
System.out.println("파싱한 문자열 출력: " + parseDate);
파싱한 문자열 출력: 2033-11-15
패턴 종류 살펴보기
오라클 공식 사이트에서 패턴 종류를 찾아 포맷터와 파싱 때 참고하도록 한다.
DateTimeFormatter (Java Platform SE 8 )
문자열 객체를 날짜 객체로 파싱
날짜 문자열을 읽어 Date 객체로 만드는 과정을 파싱이라 한다.
문자열의 어느 부분이 해이고 월과 일인지 각각의 위치가 정해져야 읽을 수 있다.
날짜 문자열(strDate)
2025년 12월 31일
LocalDate.parse(strDate, formatter) 사용하기 전에 DateTimeFormatter 사용한 모습을 볼 수 있는데. 해당 패턴의 틀을 가져와 2025년 12월 31일
문자열 값을 읽어 Date 객체로 변환하였다.
LocalDateTime - 날짜시간 객체를 String 객체로 포맷팅
// 포맷팅
// 날짜와 시간을 문자열 객체로 담기
LocalDateTime now = LocalDateTime.of(2025, 6, 24, 16, 42, 33);
System.out.println(now);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = now.format(formatter);
System.out.println(formattedDateTime);
2025-06-24T16:42:33
2025-06-24 16:42:33
LocalDateTime.parse - String 객체를 날짜시간 객체로 파싱하기
// 파싱
// String 객체를 LocalDateTime 객체로 파싱하기
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String strDate = "2025-06-24 16:42:33";
LocalDateTime parse = LocalDateTime.parse(strDate, formatter);
System.out.println("파싱된 날짜: " + parse);
파싱된 날짜: 2025-06-24T16:42:33