java - java.time.format.DateTimeParseException:无法解析文本“2020-06-05T13:54:24+03:00”,在索引 19 处找到未解析的文本
问题描述
我需要解析 LocalDateTime。我重新接收这个字符串,例如:
2020-06-05T13:54:24+03:00
好的,我在这里看到带有 timeshift 的日期时间。我添加了杰克逊数据类型库:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
我设置了 ObjectMapper:
@Bean
public ObjectMapper objectMapper() {
return new ObjectMapper()
.registerModule(new JavaTimeModule())
.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
}
&我设置了反序列化模式:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssZ")
private LocalDateTime createDateTime;
或像这样:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ssXXX")
private LocalDateTime createDateTime;
但我接受了这个例外:
Caused by: java.time.format.DateTimeParseException: Text '2020-06-05T13:54:24+03:00' could not be parsed, unparsed text found at index 19
如果我这样解析这个字符串:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssXXX");
LocalDateTime dateTime = LocalDateTime.parse("2020-06-05T13:54:24+03:00", formatter);
一切都好。
据我了解,问题在于时间转移。如何解决?
解决方案
推荐阅读
- laravel - 反向代理阻止 Laravel 向客户端发送标头
- go - 尝试在 macOS 上运行 Optimizely Agent,在“make setup”步骤中出现错误
- postgresql - Heroku Postgres 上的 Strapi CMS - 没有 pg_hba.conf 条目,SSL 关闭
- javascript - 如何使用 JavaScript/Jquery 在 Django 模板中仅切换循环的一个元素?
- python - 如何让 pandas str.contains() 正确选择带有“Virginia”和“West Virginia”的行?
- android - 无法在片段内设置文本
- python - 如何从列表的python列表中获取唯一值?
- python - matlab和python中的ms-coherence
- python - 将多列组合为单个日期时间的最佳方法是什么
- machine-learning - 为什么这个操作相当于在通道域中应用一个规则的密集层?