[JAVA] 자바 날짜 타입 포맷

2024. 6. 27. 08:28백엔드/JAVA

728x90

 

[문제상황]
- 전송 Timestamp currTime = new Timestamp(System.currentTimeMillis());
- 수신 String currTime : "20240627T07273+09"
일을 하던 도중 수신한 currTime을 다시 Timestamp 형으로 변환하여 DB에 적재를 해야하는 상황발생.

가장 큰 문제는 날짜 타입을 변환해야 하는 일이 생길 때 마다 구글링하여 적용하다 보니, 항상 어려움을 겪어왔던 기억으로 작성

 

 

 

문자열을 날짜로 표현하는 규격에는 RFC 822, ISO 8601 존재.

보편적으로 문자열을 Date형으로 변환해야 할 경우 SimpleDateFormat 클래스를 사용해서 변환을 하게됨.

SimpleDateFormat format 문자열 :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

 

 

 

문자열에 타임존을 나타내는 방법

규격 표기법 설명 format  SimpleDateFormat format 적용 예시
RFC 822 +0900 UTC 기준 9시간 늦음 Z    
KST Korea Standard Time(+0900) 2024-06-26 23:20:00.123KST

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ")
EST East Standard Time(-0500)    
IST India Standard Time(+0530)    
ISO 8601 Z 그리니치 표준시(+00과 동일) X 2024-06-26 23:20:00.123Z new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSX")
+09      
+0900      
+05:30 인도처럼 분단위 시간을 표현하는 경우 XXX    

 

* ISO 8601 에서는 '2024-06-26T23:20:00.123Z' 와 같이 날짜와 시간 사이 T문자가 있는 것이 규격이고 이를 변환할 경우 

new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX")와 같이 'T'를 넣어줘야 함

 

출처 : https://zeany.net/62

728x90

'백엔드 > JAVA' 카테고리의 다른 글

[JAVA] 람다(Lamda)  (0) 2023.12.13
[JAVA] Stream_ (2) Stream 중간연산  (2) 2023.11.29
[JAVA] Stream_ map() 과 flatMap() 차이  (0) 2023.11.29
[JAVA] Stream_ (1) Stream 생성  (2) 2023.11.28
[JAVA] 맥북 자바 완적 삭제  (0) 2023.03.27