前后端时间参数的传递

一、非Json格式

当参数没有被@RequestBody注释的皆为非Json格式。


1、后端接收

方法一

只需在时间参数前面加上@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")


方法二

也可以全局配置:实现Converter接口的convert方法并注入容器中。

@Configuration
public class ConvertConfig {
@Bean
public Converter<String, LocalDateTime> LocalDateTimeConvert() {
    return new Converter<String, LocalDateTime>() {
        @Override
        public LocalDateTime convert(String source) {
            return LocalDateTime.parse(source, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        }
    };
}

@Bean
public Converter<String, LocalDate> LocalDateConvert() {
    return new Converter<String, LocalDate>() {
        @Override
        public LocalDate convert(String source) {
            return LocalDate.parse(source, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        }
    };
}

@Bean
public Converter<String, LocalTime> LocalTimeTimeConvert() {
    return new Converter<String, LocalTime>() {
        @Override
        public LocalTime convert(String source) {
            return LocalTime.parse(source, DateTimeFormatter.ofPattern("HH:mm:ss"));
        }
    };
}}

二、Json格式

当前端传递的参数为Json格式时,需要使用@RequestBody接收,这个Json格式的数据SpringBoot是默认使用Jackson来处理,所以我们只需要配置Jackson的解析和生成规则即可。

Jackson默认序列化和反序列化的格式为yyyy-MM-dd'T'HH:mm:ss,例如2001-08-12T06:13:14,可以通过如下方法修改默认格式。

方法一:

在实体类时间字段上添加@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")注解,这样Jackson的解析和生成规则都会改成指定格式。

方法二:

全局配置:将下述序列化和反序列化器添加到容器中。

// 序列化
@Bean
public LocalDateTimeSerializer localDateTimeSerializer() {
    return new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}

@Bean
public LocalDateSerializer localDateSerializer() {
    return new LocalDateSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}

@Bean
public LocalTimeSerializer localTimeSerializer() {
    return new LocalTimeSerializer(DateTimeFormatter.ofPattern("HH:mm:ss"));
}


// 反序列化
@Bean
public LocalDateTimeDeserializer localDateTimeDeserializer(){
    return new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}

@Bean
public LocalDateDeserializer localDateDeserializer() {
    return new LocalDateDeserializer(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}

@Bean
public LocalTimeDeserializer localTimeDeserializer() {
    return new LocalTimeDeserializer(DateTimeFormatter.ofPattern("HH:mm:ss"));
}

@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
    return builder -> builder.serializerByType(LocalDateTime.class, localDateTimeSerializer())
            .serializerByType(LocalDate.class, localDateSerializer())
            .serializerByType(LocalTime.class, localTimeSerializer())
            .deserializerByType(LocalDateTime.class,localDateTimeDeserializer())
            .deserializerByType(LocalDate.class,localDateDeserializer())
            .deserializerByType(LocalTime.class,localTimeDeserializer());
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
前端后端传递`LocalDateTime`的方法有多种,以下是一种常见的方式: 1. 前端:使用 JavaScript 的 `toLocaleString` 方法将日期对象转换为字符串格式,然后传递后端。示例代码如下: ```javascript // 获取当前日期时间 const now = new Date(); // 将日期时间转换为字符串格式 const dateString = now.toLocaleString(); // 发送请求给后端,将字符串格式日期时间作为参数传递 fetch('/api/endpoint', { method: 'POST', body: JSON.stringify({ datetime: dateString }), headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => { // 处理后端返回的数据 }) .catch(error => { // 处理错误 }); ``` 2. 后端接收前端传递日期字符串,然后将其转换为 `LocalDateTime` 对象。具体的实现方式取决于后端使用的编程语言和框架。以下是 Java Spring Boot 框架的示例代码: ```java import java.time.LocalDateTime; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @RestController public class MyController { @PostMapping("/api/endpoint") public void myEndpoint(@RequestBody MyRequest request) { // 解析日期时间字符串为 LocalDateTime 对象 LocalDateTime datetime = LocalDateTime.parse(request.getDatetime()); // 处理逻辑... } public static class MyRequest { private String datetime; public String getDatetime() { return datetime; } public void setDatetime(String datetime) { this.datetime = datetime; } } } ``` 以上示例仅为参考,具体实现可能因开发环境和需求而有所不同。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值