안녕하세요 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 구조의 파일안에 위의 경우들을 모두 함수로 만들어두고 필요할 때 함수를 통해 빠르게 원하는 결과값을 얻어내면 좀더 편한 코딩라이프가 될 것 이라 기대합니다.
'안드로이드 Android' 카테고리의 다른 글
안드로이드 개발 (28) ViewLifeCycleOwner (0) | 2021.08.01 |
---|---|
안드로이드 개발 (27) paging 처리에 안드로이드 권장 architecture 적용하기 (0) | 2021.07.06 |
안드로이드 개발 (25) - Coroutine Job 사용과 AutoCompleteTextView를 사용한 검색 기록 보기 (0) | 2021.07.05 |
안드로이드 개발 (24) - 페이징 처리 실제 구현 (0) | 2021.07.05 |
안드로이드 개발 (23) - 페이징 처리 로직 (0) | 2021.07.05 |