안녕하세요 Loner입니다. 오늘은 짦게 포스팅하려고 합니다.
1. ISO 8601
최근의 어떠한 Api를 사용하다가 서버에서 저장된 time이 ISO 8601형식의 String으로 DB에 있다는걸 확인을 하게 되었습니다. ISO 8601의 경우 UTC 시간대인지 확인할 수 있고 비교도 할수 있으며 밀리세컨드의 시간대까지 확인할 수 있는 특징이 있습니다.
자세한 내용은 아래 글을 참고 하면 좋을 것 같습니다.
https://java119.tistory.com/24
ISO 8601로 서버에 시간을 저장해야하는 경우도 있거나 ISO 8601로 받아서 원하는 형태로 UI렌더링을 해줘야하는 등등 다양한 경우가 있을 것 같아서 이 포스팅에 일어날 수 있는 4가지 경우를 정리를 해놨습니다.
2. 변환
https://developer.android.com/reference/java/text/SimpleDateFormat
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 |