在 Kotlin 中将日期和时间转换为 Iso 8601
Convert date and time to Iso 8601 in Kotlin
我的应用程序中有一个选择器,我可以 select 年、月、日、小时和分钟。
在更改了每个之后,我得到了一些这样的数字:
2022 -> for year
3 -> for month
20 -> for day
16 -> hour
58 -> minute
如何将这些值转换为 Iso 8601 日期格式?
我需要这样的格式:“2022-03-20T16:58:00.288Z”
尝试使用此代码:
val date = Calendar.getInstance().apply {
set(Calendar.YEAR, year)
set(Calendar.MONTH, month)
set(Calendar.DAY_OF_MONTH, day)
set(Calendar.HOUR_OF_DAY, hour)
set(Calendar.MINUTE, minute)
}.time
val formattedDate = SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'").format(date)
切勿使用 Calendar
、SimpleDateFormat
、TimeZone
或其他旧版 date-time 类.
使用 java.time 的 OffsetDateTime
类
val localDate = LocalDateTime.of(2022, 1, 3, 16, 36)
//LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute)
val offsetDate = OffsetDateTime.of(localDate, ZoneOffset.UTC)
ZoneOffset.UTC
- 表示当前时间为 UTC 时区(LocalDate 没有任何时区信息),可以更改为系统默认值(OffsetDateTime.now().offset
)或自定义时区偏移量(ZoneOffset.of("+02:00")
)
转换为 ISO 格式
val stringDate = offsetDate.format(DateTimeFormatter.ISO_DATE_TIME)
Log.d("stringDate", "Date $stringDate")
输出: 2022-01-03T11:36:00Z
注意: java.time 类 或 Java8 仅适用于 Android 8 及以上版本,要使用这些 类 对于较低版本,您需要启用脱糖 -
我的应用程序中有一个选择器,我可以 select 年、月、日、小时和分钟。 在更改了每个之后,我得到了一些这样的数字:
2022 -> for year
3 -> for month
20 -> for day
16 -> hour
58 -> minute
如何将这些值转换为 Iso 8601 日期格式?
我需要这样的格式:“2022-03-20T16:58:00.288Z”
尝试使用此代码:
val date = Calendar.getInstance().apply {
set(Calendar.YEAR, year)
set(Calendar.MONTH, month)
set(Calendar.DAY_OF_MONTH, day)
set(Calendar.HOUR_OF_DAY, hour)
set(Calendar.MINUTE, minute)
}.time
val formattedDate = SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'").format(date)
切勿使用 Calendar
、SimpleDateFormat
、TimeZone
或其他旧版 date-time 类.
使用 java.time 的 OffsetDateTime
类
val localDate = LocalDateTime.of(2022, 1, 3, 16, 36)
//LocalDateTime of(int year, int month, int dayOfMonth, int hour, int minute)
val offsetDate = OffsetDateTime.of(localDate, ZoneOffset.UTC)
ZoneOffset.UTC
- 表示当前时间为 UTC 时区(LocalDate 没有任何时区信息),可以更改为系统默认值(OffsetDateTime.now().offset
)或自定义时区偏移量(ZoneOffset.of("+02:00")
)
转换为 ISO 格式
val stringDate = offsetDate.format(DateTimeFormatter.ISO_DATE_TIME)
Log.d("stringDate", "Date $stringDate")
输出: 2022-01-03T11:36:00Z
注意: java.time 类 或 Java8 仅适用于 Android 8 及以上版本,要使用这些 类 对于较低版本,您需要启用脱糖 -