我有一个要求,如果ISO日期时间未指定区域偏移,我应该假设欧洲/布拉迪斯拉发当前的偏移。
基本"2020-03-26T22:47:32.497" -> "2020-03-26T22:47:32.497+01:00"
Tldr;如果有时区ID,请解析时区ID,但如果不存在,则默认为特定的时区ID
我现在拥有的
private val isoDateTimeParser = DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_OFFSET_DATE_TIME)
.parseDefaulting(ChronoField...?)
.toFormatter()
显然,它不起作用。可能吗我应该只设置2个格式化程序(一个使用tz,一个不使用tz),然后一个接一个地尝试吗?
使用withZone
向格式化程序添加“替代区域”
withZone
来自文档
如果直接从文本中解析了区域,也许是因为使用DateTimeFormatterBuilder.appendZoneId(),然后进行此覆盖区域无效
顺便说一下,格式化程序几乎没有理由成为实例变量。它应该是静态的。鉴于它是不可变的,因此是一个常量,它也应该是大写。
private val isoDateTimeParser = DateTimeFormatterBuilder()
.append(DateTimeFormatter.ISO_DATE_TIME)
.toFormatter()
.withZone(/*whatever*/)