在 Android (Java/Kotlin) 中将字符串日期转换为日期而无需处理 Call 需要 API 级别 26

Har*_*ris 6 java datetime android kotlin

首先:我找到了很多解决方案,但没有一个能够解决我的问题。

问题:我想将yyyy-MM-dd格式的字符串日期转换为实际日期,我可以使用我创建的以下方法来完成此操作,但问题是它仅与 API 级别 26 及更高版本兼容,而我的最低支持级别为 19。

    //string to date convert
    @RequiresApi(Build.VERSION_CODES.O)
    fun convertStringDate(dateString: String): LocalDate {
        val format = DateTimeFormatter.ISO_DATE
        val tmpDate = LocalDate.parse("2019-12-10", format)
        var parsedDate: LocalDate = tmpDate
        try {
            parsedDate = LocalDate.parse(dateString, format)
        } catch (e: Exception) {
            e.printStackTrace()
        }
        return parsedDate
    }
Run Code Online (Sandbox Code Playgroud)

问题:如何将 yyyy-MM-dd 格式的字符串转换为实际日期,以便与 API 级别 19 及更高版本兼容?

找到答案:在模块级 build.gradle 文件中添加 desugring 作为

implementation coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
Run Code Online (Sandbox Code Playgroud)

并且还启用

coreLibraryDesugaringEnabled true
Run Code Online (Sandbox Code Playgroud)

在同一文件的编译器选项中

小智 3

您可以开始使用脱糖,这样您就可以在较低的最小 api 中使用 java 8 方法,您不仅可以获得 LocalDate,还可以获得很多其他东西。 https://developer.android.com/studio/write/java8-support#library-desugaring