안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
파싱과 포맷팅
날짜와 시간 클래스는 문자열을 파싱해서 날짜와 시간을 생성하는 메서드와
날짜와 시간을 포맷팅된 문자열로 변환하는 메서드를 제공하고 있습니다.
파싱(Parsing) 메서드
아래는 날짜와 시간 정보가 포함된 문자열을 파싱해서 날짜와 시간을 생성하는 두 개의 parse() static 메서드입니다.
클래스 리턴 타입 메서드(매개 변수)
LocalDate LocalDate parse(CharSequence)
LocalTime LocalTime
LocalDateTime LocalDateTime parse(CharSequence, DateTimeFormatter)
ZonedDateTime ZonedDateTime
LocalDate 의 parse(CharSequence) 메서드는 기본적으로 ISO_LOCAL_DATE 포맷터를 사용해서 문자열을 파싱합니다. ISO_LOCAL_DATE는 DateTimeFormatter의 상수로 정의되어 있는데
"2024-05-03" 형식의 포맷터입니다.
LocalDate localdate = LocalDate.parse("2024-05-31");
만약 다른 포맷터를 이용해서 문자열을 파싱하고 싶다면 parse(CharSequence, DateTimeFormatter)메서드를 사용할 수 있습니다. DateTimeFormatter는 ofPattern() 메서드로 정의할 수도 있는데 아래 코드는 "2024.05.31" 형식의 DateTimeFormatter를 정의하고 문자열을 파싱합니다.
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy.MM.dd");
LocalDate ld = LocalDate.parse("2024.05.31", dtf);
아래 표는 ofPattern() 메서드의 매개값으로 사용되는 패턴 기호에 대한 설명은 아래 사이트의 http://docs.oracle.com/javase/8/docs/api/ Pattern for Formartting and Parsing이란 제목으로 잘 나와있습니다.
DateTimeFormatter에는 표준화된 포맷터들이 상수로 미리정해져 있기 때문에 ofPattern() 메서드를 사용하지 않고 바로 이용할 수 있습니다.
문자열 파싱 예제)
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class DateTimeParsingExample {
public static void main(String[] args) {
DateTimeFormatter formatter;
LocalDate localDate;
localDate = LocalDate.parse("2024-05-21");
System.out.println(localDate);
formatter = DateTimeFormatter.ISO_LOCAL_DATE;
localDate = LocalDate.parse("2024-05-21", formatter);
System.out.println(localDate);
formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
localDate = LocalDate.parse("2024/05/21", formatter);
System.out.println(localDate);
formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
localDate = LocalDate.parse("2024.05.21", formatter);
System.out.println(localDate);
}
}
포맷팅(Formatting) 메서드
아래는 날짜와 시간을 포맷팅된 문자열로 변환시키는 format() 메서드 입니다.
클래스 리턴타입 메서드(매개변수)
LocalDate
LocalTime String format(DateTimeFormatter formatter)
LocalDateTime
ZonedDateTime
예제)
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateTimeFormatExample {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy년 M월 d일 a h시 m분");
String nowString = now.format(dateTimeFormatter);
System.out.println(nowString);
}
}