ysk(0soo)
Lifealong
ysk(0soo)
전체 방문자
오늘
어제
  • 분류 전체보기 (238)
    • Java (50)
      • whiteship-java-study (11)
      • Java (28)
      • time (6)
    • Spring (68)
      • JPA (15)
      • Spring (1)
      • SpringBoot (1)
      • SpringMVC (6)
      • Spring Security (22)
      • Jdbc (1)
      • RestDocs (14)
      • log (6)
    • Kotlin (3)
    • Web (2)
      • nginx (1)
    • Database (14)
      • MySQL (5)
      • PostgreSQL (1)
      • SQL (1)
      • Redis (4)
    • C, C++ (0)
    • Git (1)
    • Docker (2)
    • Cloud (3)
      • AWS (3)
    • 도서, 강의 (0)
      • t5 (0)
    • 기타 (7)
      • 프로그래밍 (1)
    • 끄적끄적 (0)
    • CS (14)
      • 운영체제(OS) (2)
      • 자료구조(Data Structure) (9)
    • 하루한개 (12)
      • 우아한 테크코스-10분테코톡 (12)
    • 스터디 (12)
      • 클린 아키텍처- 로버트마틴 (2)
      • JPA 프로그래밍 스터디 (10)
    • 테스트 (34)
      • JUnit (19)
      • nGrinder (2)
      • JMeter (0)
    • Infra (3)
    • 프로그래머스 백엔드 데브코스 3기 (0)
    • 디자인 패턴 (3)
    • Issue (4)
    • system (1)
      • grafana (0)
      • Prometheus (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

공지사항

인기 글

태그

  • 가상 스레드 예외 핸들링
  • scope value
  • mysql
  • VirtualThread Springboot
  • 가상 스레드
  • 동일성
  • FilterSecurityInterceptor
  • AuthenticationException
  • nginx basic auth
  • UserDetailsService
  • node exporter basic auth
  • StructuredConcorrency
  • 정규표현식
  • junit5
  • 인가(Authorization) 처리
  • jpa
  • 동시성 제어
  • restdocs custom
  • tree
  • 구조화된 동시성
  • nGrinder
  • AccessDecisionManager
  • AccessDecisionVoter 커스텀
  • LocalDateTime
  • DataJpaTest
  • java
  • querydsl
  • 트랜잭션
  • restdocs enum
  • 동등성

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ysk(0soo)

Lifealong

Java/time

Java time - LocalDateTime 파싱과 포맷

2022. 12. 8. 23:16

파싱과 포맷

  • 날짜와 시간을 원하는 형식으로 출력하고 해석(파싱, parsing)하는 방법
  • 형식화(formatting)와 관련된 클래스들은java.time.format패키지에 들어있음
    • 이 중 DateTimeFormatter가 핵심
LocalDate date = LocalDate.of(2016, 1, 2);

String yyyymmdd = DateTimeFormatter.ISO_LOCAL_DATE.format(date); // "2016-01-02"
String yyyymmdd = date.format(DateTimeFormatter.ISO_LOCAL_DATE); // "2016-01-02"
  • DateTimeFormatter
    • 자주 쓰이는 다양한 형식들을 기본적으로 정의
    • 그 외의 형식이 필요하다면 직접 정의해서 사용할 수 있음
  • DateTimeFormatter에 상수로 정의된 형식들의 목록
DateTimeFormatter 설명 보기
ISO_DATE_TIME Date and time with ZoneId 2019-09-14T08:59:23+09:00[Asia/Seoul]
ISO_LOCAL_DATE ISO Local Date 2019-09-14
ISO_LOCAL_TIME Time without offset 08:59:23
ISO_LOCAL_DATE_TIME ISO Local Date and Time 2019-09-14T08:59:23
ISO_OFFSET_DATE ISO Date with Offset 2019-09-14+09:00
ISO_OFFSET_TIME Time with offset 08:59:23+09:00
ISO_OFFSET_DATE_TIME Date Time with Offset 2019-09-14T08:59:23+09:00
ISO_ZONED_DATE_TIME Zoned Date Time 2019-09-14T08:59:23+09:00[Asia/Seoul]
ISO_INSTANT Date and Time of an Instant 2019-09-14T08:59:23Z
BASIC_ISO_DATE Basic ISO Date 20190914
ISO_DATE ISO Date with or without offset 2019-09-14+09:00 2019-08-14
ISO_TIME Time with or without offset 10:15:30+01:00 10:15:30
ISO_ORDINAL_DATE Year and day of year 2020-349
ISO_WEEK_DATE Year and Week 2020-W51-2
RFC_1123_DATE_TIME RFC 1123 / RFC 822 Wed, 14 NOV 2019 08:59:23 GMT

 

DateTimeFormatter의 static메서드 ofLocalizedDate(), ofLocalizedTime(), ofLocalizedDateTime()

  • 로케일에 종속된 형식화 : 로케일(locale)에 종속된 포메터를 생성
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
String shortFormat = formatter.format(LocalDate.now());
  • 로케일에 종속된 형식화 - FormatStyle의 종류에 따른 출력 형태
FormatStyle 날짜 시간
FULL 2015년 11월 28일 토요일 N/A
LONG 2015년 11월 28일 (토) 오후 9시 15분 13초
MEDIUM 2015. 11. 28 오후 9:15:13
SHORT 15. 11. 28 오후 9:15

 

출력형식 정의

DateTimeFormatter의 ofPattern()으로 원하는 출력형식을 작성할 수 있다.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
기호 의미 보기
G 연대(BC, AD) 서기 또는 AD
y 또는 u 년도 2015
M 또는 L 월(1~12 또는 1월 ~ 12월) 11
Q 또는 q 분기(quarter) 4
w 년의 몇 번째 주(1~53) 48
W 월의 몇 번째 주(1~5) 4
D 년의 몇 번째 일(1~366) 332
d 월의 몇 번째 일(1~31) 28
F 월의 몇 번째 요일(1~5) 4
E 또는 e 요일 토 또는 7
a 오전/오후(AM, PM) 오후
H 시간(0~23) 22
k 시간(1~24) 22
K 시간(0~11) 10
h 시간(1~12) 10
m 분(0~59) 12
s 초(0~59) 35
S 천 분의 일 초(0~999) 7
A 천 분의 일 초 (그 날의 0시 0분 0초부터의 시간) 80263808
n 나노초(0~999999999) 475000000
N 나노초 (그 날의 0시 0분 0초부터의 시간) 81069992000000
V (VV) 시간대 ID Asia/Seoul
z 시간대(time-zone) 이름 KST
O 지역화된 zone-offset GMT+9
Z zone-offset +0900
X또는 x zone-offSet(Z는 +00:00를 의미) +09
‘ escape 문자 (특수문자를 표현하는데 사용) 없음

 

문자열을 날짜와 시간으로 파싱하기

static LocalDateTime parse(CharSequence text);
static LocalDateTime parse(CharSequence text, DateTimeFormatter formatter);
  • parse() : 문자열을 날짜와 시간으로 파싱하는 메서드
    • 문자열을 날짜 또는 시간으로 변환할 때 사용
    • 오버로딩 된 메서드가 여러개 있다
  • 상수로 정의된 형식을 사용할 때는 다음과 같이 사용한다.
LocalDate date = LocalDate.parse(“2019-08-19”, DateTimeFormatter.ISO_LOCAL_DATE);
  • 자주 사용되는 기본적인 형식의 문자열은 ISO_LOCAL_DATE와 같은 형식화 상수를 사용하지 않아도 됨
LocalDate newDate = LocalDate.parse(“2019-08-19”);
LocalTime newTime = LocalTime.parse(“12:31:30”);
LocalDateTime newDateTime = LocalDateTime.parse(“2019-08-19T12:31:30”);
  • ofPattern()을 이용하여 파싱할 수도 있음
DateTimeFormatter pattern = DateTimeFormatter.ofPattern(“yyyy-MM-dd HH:mm:ss”);
LocalDateTime endOfYear = LocalDateTime.parse(“2019-08-19 12:31:30”, pattern);

 

참조

  • 자바의 정석
  • https://gptjs409.github.io/java/
저작자표시 비영리 (새창열림)

'Java > time' 카테고리의 다른 글

Java time 패키지 - TemporalAdjusters 클래스  (0) 2022.12.08
Java time 패키지 - Period, Duration 클래스  (0) 2022.12.08
Java time 패키지 - Calendar와 Date  (0) 2022.12.08
Java time 패키지 - LocalDateTime, ZoneDateTime, OffsetDateTime  (0) 2022.12.08
Java time 패키지 - LocalDate, LocalTime, Instant  (0) 2022.12.08
    'Java/time' 카테고리의 다른 글
    • Java time 패키지 - TemporalAdjusters 클래스
    • Java time 패키지 - Period, Duration 클래스
    • Java time 패키지 - Calendar와 Date
    • Java time 패키지 - LocalDateTime, ZoneDateTime, OffsetDateTime
    ysk(0soo)
    ysk(0soo)
    백엔드 개발을 좋아합니다. java kotlin spring, infra 에 관심이 많습니다. email : kim206gh@naver.com github : https://github.com/devysk

    티스토리툴바