如何将LocalDateTime对象转换为包含时区的ISO字符串?
我试图将日期/时间字符串来回转换成LocalDateTime
对象。 我正在使用ThreeTenBp作为日期/时间库。
字符串 – > LocalDateTime
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
LocalDateTime – >字符串
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
出于某种原因,时区丢失:
预计:<… 6-12-27T08:15:05.674 [+01:00]“>但是:<… 6-12-27T08:15:05.674 []”>
预计:“2016-12-27T08:15:05.674 + 01:00”
实际情况:“2016-12-27T08:15:05.674”
LocalDateTime
是偏移/时区不可知的类。 你需要一个OffsetDateTime
类。
字符串 – > 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")