본문 바로가기
카테고리 없음

java.time.format.DateTimeFormatter 포멧 정리

by 얼굴값하는사람 2024. 1. 29.
반응형

 

DateTimeFormatter 이란

DateTimeFormatter는 Java 8 이상에서 날짜 및 시간 형식을 지정하고 파싱하는 데 사용되는 클래스입니다. 이 클래스는 java.time.format 패키지에 포함되어 있습니다. DateTimeFormatter는 패턴을 사용하여 날짜와 시간을 형식화하거나 파싱할 수 있습니다.

다음은 몇 가지 주요 패턴 문자열과 해당 설명입니다:

  1. 년 (Year):
    • y: 연도를 나타냅니다.
    • yyyy: 4자리 연도를 나타냅니다.
  2. 월 (Month):
    • M: 1 또는 2 자리의 월을 나타냅니다.
    • MM: 2자리 월을 나타냅니다.
    • MMM: 월의 축약된 이름을 나타냅니다 (예: Jan, Feb).
    • MMMM: 월의 전체 이름을 나타냅니다 (예: January, February).
  3. 일 (Day):
    • d: 1 또는 2 자리의 일을 나타냅니다.
    • dd: 2자리 일을 나타냅니다.
  4. 시간 (Hour):
    • H: 0부터 23까지의 시간을 나타냅니다.
    • HH: 00부터 23까지의 2자리 시간을 나타냅니다.
    • h: 1부터 12까지의 시간을 나타냅니다.
    • hh: 01부터 12까지의 2자리 시간을 나타냅니다.
  5. 분 (Minute):
    • m: 분을 나타냅니다.
    • mm: 2자리 분을 나타냅니다.
  6. 초 (Second):
    • s: 초를 나타냅니다.
    • ss: 2자리 초를 나타냅니다.
  7. 날짜 및 시간 구분 기호:
    • /, -, . 등: 날짜 요소를 구분하는 데 사용됩니다.
  8. 패턴의 따옴표:
    • '' 또는 ""으로 감싸면 그 안의 문자열은 리터럴로 취급됩니다.

다음은 간단한 예제입니다:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        
        // 포맷: yyyy-MM-dd HH:mm:ss
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String formattedDateTime = now.format(formatter);
        System.out.println("Formatted DateTime: " + formattedDateTime);
        
        // 파싱: yyyy/MM/dd
        String dateString = "2022/01/29";
        LocalDate parsedDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("yyyy/MM/dd"));
        System.out.println("Parsed Date: " + parsedDate);
    }
}

 

꼭 알아야 하는 DateTimeFormatter 상수 

DateTimeFormatter 에는 자주 사용되는 형식을 상수로 정의하여 상수로 포함하고 있습니다. 이러한 상수를 사용하면 날짜와 시간 형식을 간편하게 지정할 수 있습니다. 몇 가지 주요 상수에 대한 설명은 다음과 같습니다:

  1. ISO 형식:
    • DateTimeFormatter.ISO_LOCAL_DATE: yyyy-MM-dd 형식의 날짜.
    • DateTimeFormatter.ISO_LOCAL_TIME: HH:mm:ss 형식의 시간.
    • DateTimeFormatter.ISO_LOCAL_DATE_TIME: yyyy-MM-ddTHH:mm:ss 형식의 날짜와 시간.
  2. ISO Offset 형식:
    • DateTimeFormatter.ISO_OFFSET_DATE: yyyy-MM-ddZZ 형식의 날짜와 오프셋.
    • DateTimeFormatter.ISO_OFFSET_TIME: HH:mm:ssZZ 형식의 시간과 오프셋.
    • DateTimeFormatter.ISO_OFFSET_DATE_TIME: yyyy-MM-ddTHH:mm:ssZZ 형식의 날짜, 시간, 그리고 오프셋.
  3. ISO Zoned 형식:
    • DateTimeFormatter.ISO_ZONED_DATE_TIME: yyyy-MM-ddTHH:mm:ss[.SSS]XXXXX 형식의 날짜, 시간, 그리고 시간대.
  4. RFC 1123 형식:
    • DateTimeFormatter.RFC_1123_DATE_TIME: RFC 1123 형식 (e.g., Tue, 3 Jun 2008 11:05:30 GMT)의 날짜와 시간.

 

이러한 상수를 사용하면 특정한 형식을 쉽게 설정할 수 있습니다. 

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterConstantsExample {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();

        // ISO_LOCAL_DATE 형식으로 포맷
        String isoDate = now.format(DateTimeFormatter.ISO_LOCAL_DATE);
        System.out.println("ISO Date: " + isoDate);

        // RFC_1123_DATE_TIME 형식으로 포맷
        String rfcDate = now.format(DateTimeFormatter.RFC_1123_DATE_TIME);
        System.out.println("RFC Date: " + rfcDate);
    }
}

 

이 예제에서는 DateTimeFormatter.ISO_LOCAL_DATE와 DateTimeFormatter.RFC_1123_DATE_TIME 상수를 사용하여 현재 날짜와 시간을 해당 형식으로 출력하였습니다. ^^

 

도움이 되었으면 합니다. 감사합니다.

반응형