BobDoolittle Asked: 2025-01-18 10:05:48 +0800 CST2025-01-18 10:05:48 +0800 CST 2025-01-18 10:05:48 +0800 CST 在 Android 上从 Instant 获取 ISO 8601 日期时间字符串 772 我有一个用 Kotlin Instant 表示的时间。我想获取 Android 上本地时区的 ISO 8601 日期时间字符串。但我遇到了两个名为 TimeZone 的独立类之间的冲突,并且不知道如何在它们之间进行转换(或者我是否走在正确的道路上)。 Kotlin文档说使用Instant.toLocalDateTime()并传递一个TimeZone。那就是androidx.datetime.TimeZone。 Android文档说使用 获取本地时区TimeZone.getDefault()。但那是android.icu.util.TimeZone。 完成这个简单任务的正确方法是什么? 2 个回答 Voted Best Answer 2025-01-19T08:59:03+08:002025-01-19T08:59:03+08:00 有几种不同的日期框架可用,但互操作性有限。 到目前为止,您选择使用包中的 Kotlin datetime 库kotlinx.datetime,因此最简单的方法就是继续使用它。toLocalDateTime需要一个类型的参数kotlinx.datetime.TimeZone,因此您可以TimeZone.currentSystemDefault()在使用时使用它来获取当前时区 import kotlinx.datetime.TimeZone 不要使用以下任何一项: import android.icu.util.TimeZone import java.util.TimeZone Dawid Czopek 2025-01-18T14:01:10+08:002025-01-18T14:01:10+08:00 我实现这一目标的最简单的方法是: SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", Locale.getDefault() ).format(System.currentTimeMillis())
有几种不同的日期框架可用,但互操作性有限。
到目前为止,您选择使用包中的 Kotlin datetime 库
kotlinx.datetime
,因此最简单的方法就是继续使用它。toLocalDateTime
需要一个类型的参数kotlinx.datetime.TimeZone
,因此您可以TimeZone.currentSystemDefault()
在使用时使用它来获取当前时区不要使用以下任何一项:
我实现这一目标的最简单的方法是: