관리 메뉴

나만을 위한 블로그

[Android] minSdkVersion이 26 미만일 때 코틀린으로 UTC 시간을 원하는 형식으로 바꾸는 법 본문

Android

[Android] minSdkVersion이 26 미만일 때 코틀린으로 UTC 시간을 원하는 형식으로 바꾸는 법

참깨빵위에참깨빵 2022. 6. 1. 16:07
728x90
반응형

이따금 "2022-02-02T01:12:23.524Z" 형식의 괴랄한 시간을 받아와서 내가 원하는 시간으로 바꿔야 할 때가 있다. 이것도 자꾸 찾아보기 귀찮아서 테스트한 다음에 포스팅해서 남겨둔다.

안드로이드의 경우 앱 수준 gradle의 minSdkVersion에 따라 사용할 수 있는 클래스와 메서드가 바뀌기 때문에 버전에 따라 로직이 바뀐다.

minSdkVersion이 26 미만인 경우 아래 로직으로 간단하게 내가 원하는 시간 형식으로 뽑아낼 수 있다.

 

class MainActivity : AppCompatActivity() {

    val TAG = this.javaClass.simpleName

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val string = "2022-06-01T06:34:18.713Z"
        val defaultTimezone = TimeZone.getDefault().id
        val date = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")
            .parse(string.replace("Z$".toRegex(), "+0000"))

        Log.e(TAG, "바꿀 시간 : $string")
        Log.e(TAG, "defaulttimeZone : $defaultTimezone")
        Log.e(TAG, "변경된 날짜 : ${SimpleDateFormat("yyyy.MM.dd").format(date)}")
    }
}

// >> 바꿀 시간 : 2022-06-01T06:34:18.713Z
// >> defaulttimeZone : GMT
// >> 변경된 날짜 : 2022.06.01

 

참고한 사이트)

 

https://stackoverflow.com/questions/2580925/simpledateformat-parsing-date-with-z-literal

 

SimpleDateFormat parsing date with 'Z' literal

I am trying to parse a date that looks like this: 2010-04-05T17:16:00Z This is a valid date per http://www.ietf.org/rfc/rfc3339.txt. The 'Z' literal (quote) "imply that UTC is the preferred ref...

stackoverflow.com

 

반응형
Comments