본문 바로가기

안드로이드 Android

안드로이드 개발 (26) ISO 8601 변환하기

안녕하세요 Loner입니다. 오늘은 짦게 포스팅하려고 합니다.

 

1. ISO 8601

 

최근의 어떠한 Api를 사용하다가 서버에서 저장된 time이 ISO 8601형식의 String으로 DB에 있다는걸 확인을 하게 되었습니다. ISO 8601의 경우 UTC 시간대인지 확인할 수 있고 비교도 할수 있으며 밀리세컨드의 시간대까지 확인할 수 있는 특징이 있습니다.

 

자세한 내용은 아래 글을 참고 하면 좋을 것 같습니다.

https://java119.tistory.com/24

 

[ISO] ISO 8601 개념

ISO 날짜 형식이란? 정식 명칭 Date elements and interchange formats - Information interchange - Representation of dates and times 미쳤다.. 현재 제일 최신 버전 ISO 8601 구버전 IS..

java119.tistory.com

 

ISO 8601로 서버에 시간을 저장해야하는 경우도 있거나 ISO 8601로 받아서 원하는 형태로 UI렌더링을 해줘야하는 등등 다양한 경우가 있을 것 같아서 이 포스팅에 일어날 수 있는 4가지 경우를 정리를 해놨습니다. 

 

2. 변환

 

https://developer.android.com/reference/java/text/SimpleDateFormat

 

SimpleDateFormat  |  Android 개발자  |  Android Developers

 

developer.android.com

SimpleDateFormat를 위주로 사용했습니다. 더 원하는 형태로 다루고 싶다면 

공식문서 내용의 Date and Time Patterns 표를 참고하면 좋을 것 같습니다.

 

 

1) 현재 시간을  ISO 8601 형식으로 String 변환 저장

val sdf = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.KOREAN)
val formattedDate = sdf.format(Date())

 

2) ISO 8601 형식의 String을 Date로 변환 저장

//time:Stirng
val format = SimpleDateFormat("YYYY-MM-DD'T'hh:mm:ss.SSSZ", Locale.KOREAN)
val date = format.parse(time)

 

3) ISO 8601 형식의 Date를 원하는 형식으로 String으로 변환 

//date:Date
val formatter = SimpleDateFormat("yyyy-MM-dd",Locale.KOREAN)
val dateString: String = formatter.format(date!!)

 

4) ISO 8601 String -> Date -> String

//time:String
val format = SimpleDateFormat("YYYY-MM-DD'T'hh:mm:ss.SSSZ", Locale.KOREAN)
val date = format.parse(time)
val formatter = SimpleDateFormat("yyyy-MM-dd",Locale.KOREAN)
val dateString: String = formatter.format(date!!)

이렇게 보니 정말 SimpleDateFormat을 자주쓰게 되네요 만약 서버에 ISO 8601를 발견했다! 그러면 util 구조의 파일안에 위의 경우들을 모두 함수로 만들어두고 필요할 때 함수를 통해 빠르게 원하는 결과값을 얻어내면 좀더 편한 코딩라이프가 될 것 이라 기대합니다.