728x90
반응형
String to TimeStamp
- String 으로 넘어온 TimeStamp 를 LocalDateTime 으로 변경해보자
- TimeStamp 의 표현방식은 다양하기 때문에 어떻게 변환을 해야 되는지 알고 있으면 도움이 될것 같다.
ISO 8601
- 갑자기 ISO 8610? 이걸 먼저 알아야 어떻게 변환하는지 알수 있다.
- ISO 8601은 날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준이다
- TimeZone 에 따라 변환방법이 달라지기 때문이다.
ISO 의 혼합 표기법
- 아래 처럼 표현되는 방식이 기본이다 우리가 개발할때 많이 쓰는 방식이다.
<date>T<time> => 2022-12-15T13:00:00.123+09:00
- date: 날짜
- T: date 와 Time 을 구별하는 구분자
- time: 시간
ISO 의 TimeZone 표기법
- +: 기술 중인 시간이 UTC보다 한 시간 앞선다
- -: 기술 중인 시간이 UTC보다 한시간 늦다.
- 참고로 0 은 마이너스를 금지한다.
표기법 | 예제 | 설명 |
<time>Z | 13:00:00Z |
시간이 UTC인 경우 시간 뒤에 Z를 직접 추가해야 한다. Z는 오프셋이 0인 UTC를 위한 지역 지정자(zone designator)다 |
<time>±hh:mm | 13:00:00+01:10 |
기술된 시간 보다 1시간 10분 앞선다 |
13:00:00+0110 | 기술된 시간 보다 1시간 10분 앞선다 | |
13:00:00+01 | 기술된 시간 보다 1시간 10분 앞선다 |
변환 포맷 익히기
- 위처럼 다양한 포맷 들이 있고 어떻게 포맷에 따라 변환을 해야 되는지 정리해본다.
- 0900, 09 같은 경우 X로 포맷을 정해준다.
- 09:00 같은 경우 XXX로 포맷을 정해준다.
- time.000 같은 경우 SSS로 포맷을 정해준다
T 가 없는 경우
2022-12-15 09:00:00 => yyyy-MM-dd HH:mm:ss
2022-12-15 09:00:00+0900 => yyyy-MM-dd HH:mm:ssX
2022-12-15 09:00:00+09:00 => yyyy-MM-dd HH:mm:ssXXX
2022-12-15 09:00:00.624+09:00 => yyyy-MM-dd HH:mm:ss.SSSXXX
T 가 있는 경우
2022-12-15T09:00:00 => yyyy-MM-dd'T'HH:mm:ss
2022-12-15T09:00:00+0900 => yyyy-MM-dd'T'HH:mm:ssX
2022-12-15T09:00:00+09:00 => yyyy-MM-dd'T'HH:mm:ssXXX
2022-12-15T09:00:00.624+09:00 => yyyy-MM-dd'T'HH:mm:ss.SSSXXX
예제1: T가 없는 경우
String strDate1 = "2022-12-15 09:00:00";
DateTimeFormatter pattern1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime parse1 = LocalDateTime.parse(strDate1, pattern1);
System.out.println(strDate1 +" => "+ parse1.toString());
String strDate2 = "2022-12-15 09:00:00+0900";
DateTimeFormatter pattern2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssX");
LocalDateTime parse2 = LocalDateTime.parse(strDate2, pattern2);
System.out.println(strDate2 +" => "+ parse2.toString());
String strDate3 = "2022-12-15 09:00:00+09:00";
DateTimeFormatter pattern3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssXXX");
LocalDateTime parse3 = LocalDateTime.parse(strDate3, pattern3);
System.out.println(strDate3 +" => "+ parse3.toString());
String strDate4 = "2022-12-15 09:00:00.624+09:00";
DateTimeFormatter pattern4 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSXXX");
LocalDateTime parse4 = LocalDateTime.parse(strDate4, pattern4);
System.out.println(strDate4 +" => "+ parse4.toString());
=====================결과=============================
2022-12-15 09:00:00 => 2022-12-15T09:00
2022-12-15 09:00:00+0900 => 2022-12-15T09:00
2022-12-15 09:00:00+09:00 => 2022-12-15T09:00
2022-12-15 09:00:00.624+09:00 => 2022-12-15T09:00:00.624
반응형
예제1: T가 있는 경우
String strDate1 = "2022-12-15T09:00:00";
DateTimeFormatter pattern1 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss");
LocalDateTime parse1 = LocalDateTime.parse(strDate1, pattern1);
System.out.println(strDate1 +" => "+ parse1.toString());
String strDate2 = "2022-12-15T09:00:00+0900";
DateTimeFormatter pattern2 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssX");
LocalDateTime parse2 = LocalDateTime.parse(strDate2, pattern2);
System.out.println(strDate2 +" => "+ parse2.toString());
String strDate3 = "2022-12-15T09:00:00+09:00";
DateTimeFormatter pattern3 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
LocalDateTime parse3 = LocalDateTime.parse(strDate3, pattern3);
System.out.println(strDate3 +" => "+ parse3.toString());
String strDate4 = "2022-12-15T09:00:00.624+09:00";
DateTimeFormatter pattern4 = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
LocalDateTime parse4 = LocalDateTime.parse(strDate4, pattern4);
System.out.println(strDate4 +" => "+ parse4.toString());
=====================결과=============================
2022-12-15T09:00:00 => 2022-12-15T09:00
2022-12-15T09:00:00+0900 => 2022-12-15T09:00
2022-12-15T09:00:00+09:00 => 2022-12-15T09:00
2022-12-15T09:00:00.624+09:00 => 2022-12-15T09:00:00.624
참고:
https://ko.wikipedia.org/wiki/ISO_8601
728x90
반응형
'Language > Java' 카테고리의 다른 글
[Java] Generic 제한 (0) | 2022.06.21 |
---|---|
[Java] Generic 기초 (0) | 2022.06.11 |
[Java] Double의 제한사항 (0) | 2021.12.11 |
[Java] BigDecimal (2) | 2021.12.11 |
[Java] Generic Type Erasure (0) | 2021.10.29 |
댓글