如何处理返回不同格式日期时间的 API 的 LocalDateTime? [复制]

Posted

技术标签:

【中文标题】如何处理返回不同格式日期时间的 API 的 LocalDateTime? [复制]【英文标题】:How to handle a LocalDateTime from API that returns datetime in different format? [duplicate] 【发布时间】:2020-08-15 00:03:43 【问题描述】:

我正在使用一个 rest 模板调用 Java 中的 API,它返回这个对象:

@JsonIgnoreProperties(ignoreUnknown = true)
@Getter
public class MyObject 
    //@JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime accessTime;
    private String name;

问题是 API 检索到的 accessTime 看起来像这样:

2020-04-29 12:52:57

而且我不能使用 LocalDateTimeDeserializer。

这是以下错误:

Can not deserialize value of type java.time.LocalDateTime from String \"2020-04-29 12:52:57\": Text '2020-04-29 12:52:57' could not be parsed at index 10

我该如何处理?谢谢

【问题讨论】:

请this question and its accepted answer帮忙? 假设您使用的是JavaTimeModule,Jackson 已经在使用LocalDateTimeDeserializer,因此注释您的字段将是多余的。 @deHaar 我在发布我的问题之前看到了这个答案,但是在“@DateTimeFormat(iso = DateTimeFormatter.ofPattern("yyyy-MM-dd HH)”处出现以下错误“属性值必须是恒定的” :mm"))" 【参考方案1】:

我猜您正在寻找一种方法,该方法将从 API 接收本地日期时间字符串,然后使用此方法并存储转换后的 localdatetime 格式。这是可以帮助您的方法:

private LocalDateTime TryPase(string accessTime)

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); //edit your format
return LocalDateTime.parse(accessTime, formatter);

【讨论】:

谢谢,但我想避免使用方法,因为对象是在 restTemplate 发布期间直接映射的,这就是我寻找 JsonFormatter 或其他什么的原因 这确实是一个更好的选择

以上是关于如何处理返回不同格式日期时间的 API 的 LocalDateTime? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何处理mysql中的时间戳读取问题

如何处理python系列中的多种日期字符串格式

使用 date 命令生成 iso-8601 格式的时间序列,如何处理服务器系统日期原点偏移?

在java中如何处理日期格式问题

如何处理返回没有行的 IN 子句的子查询

如何处理 API 有时将属性作为数组返回,有时作为对象返回?