在 Java(或 Kotlin)中,我需要使用时区将日期和时间从 yyyy-mm-dd 和 hh:mm:ss 格式转换为 LocalDate LocalTime

Kol*_*los 1 java timezone datetime date kotlin

我需要使用 timeZone 作为字符串将来自 JSON 文件的字符串转换为 LocalDate 和 LocalTime 格式。我只设法使用 LocalDate.ofInstant(Instant, ZoneId) 方法将日期转换为 LocalDate,但它需要像这样的时间和日期格式2021-05-21T10:17:55.539729Z,但我只收到的字符串采用如下所示的格式(yyyy-mm-dd 和 hh :mm:ss)

{
"timeZone": "America/New_York",
"date": "2021-02-25",
"time": "13:00:00"
}
Run Code Online (Sandbox Code Playgroud)

Lin*_*ica 5

您可以将每个子组件转换为其对应的java.time对象,然后将所有组件组合成一个ZonedDateTime

val jsonData = // your parsed json
val zone = ZoneId.of(jsonData.timeZone)
val time = LocalTime.parse(jsonData.time)
val date = LocalDate.parse(jsonData.date)
val zonedDateTime = ZonedDateTime.of(date, time, zone)

println(zonedDateTime) // 2021-02-25T13:00-05:00[America/New_York]
Run Code Online (Sandbox Code Playgroud)