You need to enable JavaScript to run this app. 最低支持API 21时如何将LocalDate转换为Date
优惠活动
大模型
产品
解决方案
定价
更多

最低支持API 21时如何将LocalDate转换为Date

LocalDate 转 Date 低版本Android兼容方案

报错原因

java.util.Date#from 方法及 java.time.LocalDate 所属的Java 8时间API,Android原生仅支持API Level 26及以上版本,因此minSdk设置为21时直接调用会触发API等级不兼容报错。

最优解决方案:开启核心库Desugaring

这是Google官方推荐的低版本Android兼容Java 8+ API的方案,开启后无需修改原有转换代码,即可在API 21及以上设备正常使用全量java.time相关能力。

开启步骤

  • 确认项目根目录下的build.gradle中Android Gradle插件版本不低于4.0.0:
buildscript {
    dependencies {
        classpath "com.android.tools.build:gradle:4.0.0+"
    }
}
  • 打开app模块下的build.gradle,添加Desugaring配置:
android {
    compileOptions {
        // 开启核心库脱糖
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    // Kotlin项目需追加以下配置
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {
    // 引入脱糖依赖
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}
  • 同步Gradle后,原有转换代码即可正常运行。

备选转换方案(无需开启Desugaring)

如果暂时无法开启Desugaring,可通过时间戳转换的方式实现兼容,代码如下:

val zoneId = ZoneId.systemDefault()
// 计算LocalDate对应的毫秒级时间戳
val timeStamp = finalLocalDate.atStartOfDay(zoneId).toEpochSecond() * 1000
val finalDate = Date(timeStamp)

内容的提问来源于stack exchange,提问作者ant2009

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 15:36:01