gpt4 book ai didi

java - Kotlin:将日期字符串转换为 ISO 字符串

转载 作者:行者123 更新时间:2023-12-01 07:00:24 26 4
gpt4 key购买 nike

我有一个日期字符串,格式如下:MM/DD/2019可能的值可以是 1/16/201911/31/2019例如。

我正在寻找一种方法来转换此字符串值以获得以下格式:

2019-11-31 15:07:57.013Z

如何在 Kotlin 中做到这一点?

最佳答案

Kotlin 的一大优点是您可以重用 Java 库,因此 java.time库可以像这样使用:

import org.junit.jupiter.api.Test
import java.time.LocalDate
import java.time.ZoneId
import java.time.format.DateTimeFormatter

class ApplicationTests {
@Test
fun changeDateFormat(){
val inputDateString = "11/31/2019"
val inputFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy")
val localDate = LocalDate.parse(inputDateString, inputFormatter)
val outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSZ")
val localDateTime = localDate.atStartOfDay()
val zonedDateTime = localDateTime.atZone(ZoneId.of("America/New_York"))
val outputDateString = outputFormatter.format(zonedDateTime)
print(outputDateString)
}
}

运行该测试将打印 2019-12-01 00:00:00.000-0500作为输出。

新格式包含小时和分钟,因此 LocalDate需要转化为LocalDateTime ,这可以通过 atStartOfDay() 来完成,作为一个选项,有 atTime(H,M) .

新格式还有时区,因此您需要将其转换为 ZonedDateTime方法.atZone(..)可以用于此目的。

<小时/>

java.text.SimpleDateFormat也可以用在几行中:

val date = SimpleDateFormat("MM/dd/yyyy").parse("11/31/2019")
print(SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ").format(date))

但正如@OleV.V。指出它已经过时并且存在一些问题(例如不考虑时间和时区可能会导致不希望的错误)。

关于java - Kotlin:将日期字符串转换为 ISO 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com