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

2024-01-10

我正在尝试将日期/时间字符串来回转换为LocalDateTime目的。我在用三十Bp http://www.threeten.org/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

由于某种原因缺少时区:

预期:但是是:
预计:“”
实际:“::”15:05.674>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")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 LocalDateTime 对象转换为包含时区的 ISO 字符串? 的相关文章

随机推荐