这个错误是因为在将 JSON 字符串转换为 Java 对象时,无法将字符串类型的日期时间转换为 LocalDateTime 类型。在错误消息中提到了具体的转换失败的日期时间字符串是'2023-08-30 11:29:59'。

要解决这个问题,你可以尝试以下几种方法:

  1. 确保日期时间字符串的格式符合 LocalDateTime 的要求。LocalDateTime 的默认格式是'yyyy-MM-ddTHH:mm:ss',所以你的日期时间字符串应该是'2023-08-30T11:29:59'。你可以尝试修改发送请求的代码,以确保日期时间字符串的格式正确。

  2. 如果你无法修改发送请求的代码或者日期时间字符串的格式,你可以自定义一个日期时间格式化器,用于将字符串转换为 LocalDateTime 对象。你可以使用@JsonFormat注解来指定日期时间的格式,然后在对应的字段上使用该注解。例如:

import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalDateTime;

public class CoursePublish {
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createDate;

    // 其他字段和方法
}

这样,当使用 Jackson 进行 JSON 转换时,它将使用指定的格式来解析日期时间字符串。

  1. 如果你使用的是 Spring Boot 和 Spring MVC,你还可以尝试在配置类中注册一个全局的日期时间格式化器。你可以创建一个继承自WebMvcConfigurer接口的配置类,并重写addFormatters方法,在该方法中注册日期时间格式化器。例如:
import org.springframework.context.annotation.Configuration;
import org.springframework.format.FormatterRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.time.format.DateTimeFormatter;

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addFormatter(new LocalDateTimeFormatter());
    }
}

class LocalDateTimeFormatter extends org.springframework.format.datetime.standard.DateTimeFormatterRegistrar {
    public LocalDateTimeFormatter() {
        setDateTimeFormatter(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }
}

这样,当 Spring MVC 接收到日期时间字符串时,它将使用你指定的格式来解析,并将其转换为 LocalDateTime 对象。

希望以上解决方法能帮到你解决这个问题。

Spring Boot 中解析 LocalDateTime 失败:'2023-08-30 11:29:59' 无法解析

原文地址: https://www.cveoy.top/t/topic/qDap 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录