일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인텔리제이
- string
- 자바
- input
- IntelliJ
- date
- html
- CMD
- Files
- Eclipse
- Visual Studio Code
- table
- 문자열
- 배열
- vscode
- javascript
- 이클립스
- Maven
- 테이블
- CSS
- list
- Array
- json
- windows
- ArrayList
- 이탈리아
- Java
- 자바스크립트
- js
- Button
- 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
SimpleDateFormat (Java Platform SE 8 )
Parses text from a string to produce a Date. The method attempts to parse text starting at the index given by pos. If parsing succeeds, then the index of pos is updated to the index after the last character used (parsing does not necessarily use all charac
docs.oracle.com
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
DateTimeFormatter (Java Platform SE 8 )
Parses the text using this formatter, without resolving the result, intended for advanced use cases. Parsing is implemented as a two-phase operation. First, the text is parsed using the layout defined by the formatter, producing a Map of field to value, a
docs.oracle.com
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 |