일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- list
- Maven
- windows
- javascript
- html
- CMD
- IntelliJ
- table
- 배열
- date
- Eclipse
- Files
- 자바스크립트
- CSS
- 이클립스
- js
- 문자열
- Button
- vscode
- 인텔리제이
- string
- Java
- input
- 이탈리아
- json
- ArrayList
- 자바
- Visual Studio Code
- 테이블
- Array
- Today
- Total
어제 오늘 내일
[Java] 문자열을 날짜로 변환하기 (Date, LocalDateTime) 본문
지난번에는 Java API를 이용하여 현재 날짜, 시간을 구하는 방법을 알아보았습니다.
여러가지 방법이 있지만,
Java 8 이전에는 Date, Calendar, 포맷터로는 SimpleDateFormat
Java 8 이후에는 LocalDate, LocalTime, LocalDateTime, 포맷터로는 DateTimeFormatter를
사용한다고 하였습니다.
이번에는
- SimpleDateFormat 클래스를 이용하여, 문자열을 Date 객체로 바꾸는 방법
- DateTimeFormatter 클래스를 이용하여, 문자열을 LocalDateTime 객체로 바꾸는 방법
을 소개합니다.
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일 kk시 mm분 ss초");
SimpleDateFormat 클래스를 이용하여,
문자열을 어떻게 parsing하여 읽어들일지 정의합니다.
파라미터 문자열에 사용된 yyyy, MM, dd, kk, mm, ss는
포맷에 맞추어 읽어들인 문자가 어떤 의미인지를 나타냅니다.
그 의미는 다음의 Java 공식 문서를 참조하세요.
https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html
Date date = formatter.parse(dateStr);
SimpleDateFormat 클래스의 parse() 메소드는
파라미터로 받은 문자열을 포맷에 맞추어 읽어서
Date 타입의 객체를 리턴합니다.
String -> LocalDateTime
LocalDateTime을 원하는 포맷으로 출력하기 위해, DateTimeFormatter 클래스를 이용했던 것과 같이,
문자열을 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
}
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분 ss초");
DateTimeFormatter로 문자열을 읽어들일 포맷을 지정합니다.
파라미터로 전달된 문자열에 사용된 'yyyy, MM, dd, HH, mm, ss'의 의미는
오라클의 공식 문서를 참조하세요.
https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
LocalDateTime date = LocalDateTime.parse(dateStr, formatter);
LocalDateTime.parse() 메소드에
LocalDateTime으로 변환할 문자열과
formatter를 전달하여 문자열을 LocalDateTime 타입의 객체로 변환하였습니다.
문자열을 Date, LocalDateTime 객체로 변환하는 방법을 알아보았습니다.
Java 8 이상을 사용한다면, Date 클래스 보다는, LocaDateTime 클래스 사용을 권장합니다.
또한, 문자열을 LocalDate, LocalTime 형태로 변환할 수도 있고,
문자열을 LocalDateTime으로 바꾸는 방법과 비슷한 방법으로
문자열을 LocalDate, LocalTime 객체로 바꿀 수 있습니다.
'IT > Java' 카테고리의 다른 글
[Java] 날짜 비교하기 ( LocalDate, LocalDateTime, Date, Calendar) (0) | 2021.06.19 |
---|---|
[Java] 특정 날짜의 요일 구하기 (숫자, 영문, 한글) (0) | 2021.06.19 |
[Java] 두 개의 List를 비교하여, 서로 중복되는 값 찾기 (0) | 2021.06.18 |
[Java] 현재 날짜, 현재 시간 구하기 (1) | 2021.06.18 |
[Java] 파일에서 확장자 추출하기 (0) | 2021.06.07 |