gpt4 book ai didi

kotlin - 如何将 LocalDateTime 对象转换为包含时区的 ISO 字符串?

转载 作者:行者123 更新时间:2023-12-02 11:51:02 24 4
gpt4 key购买 nike

我正在尝试将日期/时间字符串来回转换为 LocalDateTime目的。我正在使用 ThreeTenBp作为日期/时间库。

字符串 -> 本地日期时间

val actual = LocalDateTime.parse("2016-12-27T08:15:05.674+01:00", 
DateTimeFormatter.ISO_DATE_TIME)
val expected = LocalDateTime.of(2016, 12, 27, 8, 15, 5, 674000000)
assertThat(actual).isEqualTo(expected) // Successful

本地日期时间 -> 字符串
val dateTime = LocalDateTime.of(2016, 12, 27, 8, 15, 5, 674000000)
val actual = dateTime.format(DateTimeFormatter.ISO_DATE_TIME)
assertThat(actual).isEqualTo("2016-12-27T08:15:05.674+01:00") // Fails

由于某种原因,时区丢失:

expected: <...6-12-27T08:15:05.674[+01:00]"> but was:<...6-12-27T08:15:05.674[]">
Expected :"2016-12-27T08:15:05.674+01:00"
Actual :"2016-12-27T08:15:05.674"

最佳答案

LocalDateTime是偏移/时区不可知类。您需要一个 OffsetDateTime类(class)。

字符串 -> OffsetDateTime

val actual = OffsetDateTime.parse("2016-12-27T08:15:05.674+01:00", DateTimeFormatter.ISO_DATE_TIME)
val expected = OffsetDateTime.of(2016, 12, 27, 8, 15, 5, 674000000, ZoneOffset.of("+01:00"))
assertThat(actual).isEqualTo(expected)

OffsetDateTime -> 字符串
val dateTime = OffsetDateTime.of(2016, 12, 27, 8, 15, 5, 674000000, ZoneOffset.of("+01:00"))
val actual = dateTime.format(DateTimeFormatter.ISO_DATE_TIME)
assertThat(actual).isEqualTo("2016-12-27T08:15:05.674+01:00")

关于kotlin - 如何将 LocalDateTime 对象转换为包含时区的 ISO 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41656756/

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