Android - 如何修复 java.time.zone.ZoneRulesException:未知时区 ID:欧洲/基辅

问题描述 投票:0回答:1

我在 Android 应用程序中遇到时区问题 (minSdkVersion = 26)。我从服务器收到时区列表,其中包括“欧洲/基辅”。但是,当我尝试使用

ZoneId.of("Europe/Kyiv")
将其转换为 ZoneId 时,出现以下错误:
java.time.zone.ZoneRulesException: Unknown time-zone ID: Europe/Kyiv

我在网上看到基辅的 IANA 时区标识符已于 2022 年末从“欧洲/基辅”更新为“欧洲/基辅”。

我的问题是,我需要对我的项目进行哪些具体更新才能成功使用

ZoneId.of("Europe/Kyiv")

我将minSdk更新到26,但没有帮助。 另外,我尝试将 Gradle JDK 更新到 18+,但不起作用。

java android kotlin timezone zoneid
1个回答
1
投票

时区更新由 Google 或设备的 OEM/ODM 完成。

Android 开源项目有有关更新时区文件的文档:

https://source.android.com/docs/core/permissions/timezone-rules

根据评论线程,模拟器似乎没有使用任何最新的

tzdata
信息进行更新,因此模拟器 Android 操作系统很可能是特定版本发布时 AOSP 的快照。

如果您需要更新

tzdata
,也许在不再受支持的旧设备上,您将需要使用第三方库。根据这个问题更新Android tzdata文件中的评论,库:https://github.com/dlew/joda-time-android可以满足获取
tzdata
更改的需求,但需要更新库和您的应用程序根据需要,即以一定的频率。

© www.soinside.com 2019 - 2024. All rights reserved.