springboot接收日期类型参数的操作方法

 更新时间:2024年02月28日 09:26:40   作者:HelloWorld102  
如果使用Get请求,直接使用对象接收,则可以使用@DateTimeFormat注解进行格式化,本文重点给大家介绍springboot接收日期类型参数的方法,感兴趣的朋友一起看看吧

唠嗑部分

在做Java开发时,肯定会碰到传递时间参数的情况吧,比如用户的出生日期、活动的开始,结束日期等等,这些参数往往是由前端传递过来的,那么在SpringBoot项目中,该如何正确的接收日期参数呢,这便是我们今日所说的内容

首先我们来回顾一下常用的几种传参方式

1、Params参数

Params参数也称路径传参,参数是路径的一部分,如:http://127.0.0.1:8888/date/receiveParamOfParams/2023-05-22

2、Query参数

Query参数通常使用?进行传递,多个参数使用&分割,如:http://127.0.0.1:8888/date/receiveParamOfQuery?bothDate=2023-05-22

3、请求体参数

请求体参数也是我们常用的json传参

那么为什么要回顾传参方式呢,难道说传参方式不同,接收日期参数的方式也不一样吗?是的没错

下面步入正文。

springboot接收日期类型参数

如果使用Get请求,直接使用对象接收,则可以使用@DateTimeFormat注解进行格式化,如:

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startBuyDate;

如果使用Post请求,@RequestBody接收请求体参数,默认解析日期格式为yyyy-MM-dd HH:mm:ss , 如果需要接收其他格式的参数,则可以使用@JsonFormat注解,如:

@JsonFormat(timezone="GMT+8",pattern="yyyy-MM-dd")
private Date buyDate;

也可以使用java8新增的LocalDate自定义序列化,如:

@Configuration
@ConditionalOnClass(ObjectMapper.class)
@AutoConfigureBefore(JacksonAutoConfiguration.class)
public class JacksonConfig {
    @Bean
    public Jackson2ObjectMapperBuilderCustomizer customizer() {
        return builder -> {
            builder.locale(Locale.CHINA);
            builder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));
            builder.simpleDateFormat(DatePattern.NORM_DATETIME_PATTERN);
            builder.modules(new TimeModule());
        };
    }
}
public class TimeModule extends SimpleModule {
    public TimeModule() {
        super(PackageVersion.VERSION);
        this.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
        this.addSerializer(LocalDate.class, new LocalDateSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
        this.addSerializer(LocalTime.class, new LocalTimeSerializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
        this.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN)));
        this.addDeserializer(LocalDate.class, new LocalDateDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_DATE_PATTERN)));
        this.addDeserializer(LocalTime.class, new LocalTimeDeserializer(DateTimeFormatter.ofPattern(DatePattern.NORM_TIME_PATTERN)));
    }
}
//yyyy-MM-dd HH:mm:ss
private LocalDateTime buyDateTime;
//yyyy-MM-dd
private LocalDate buyDate;
//HH:mm:ss
private LocalTime buyTime;

扩展:

springboot项目接收一个日期类型参数

        1. 在Controller的方法参数中使用@RequestParam注解接收日期参数,可以通过指定日期格式实现,例如:

@GetMapping("/api/date") public String getDate(@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) { // ... }

        2.使用@PathVariable注解接收日期参数,例如

@GetMapping("/api/date/{date}")
public String getDate(@PathVariable("date") @DateTimeFormat(pattern = "yyyy-MM-dd") Date date) {
    // ...
}

        3. 在请求体中发送JSON格式的数据,并使用@RequestBody注解接收日期类型的字段,例如:

@PostMapping("/api/date")
public String getDate(@RequestBody RequestBodyDto requestBodyDto) {
    Date date = requestBodyDto.getDate();
    // ...
}

        其中,RequestBodyDto为请求体对应的Java对象,可以使用@JsonFormat注解指定日期格式,例如:

public class RequestBodyDto {
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date date;
    // getter/setter
}

        无论使用哪种方式接收日期参数,都需要注意指定日期格式,以避免类型转换错误和日期格式化异常。

到此这篇关于springboot接收日期类型参数的文章就介绍到这了,更多相关springboot日期类型参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot异步与事务一起使用的问题解决

    SpringBoot异步与事务一起使用的问题解决

    本文主要介绍了SpringBoot异步与事务一起使用的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • springboot整合mybatis-plus 实现分页查询功能

    springboot整合mybatis-plus 实现分页查询功能

    这篇文章主要介绍了springboot整合mybatis-plus 实现分页查询功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Mybatis使用typeHandler加密的实现

    Mybatis使用typeHandler加密的实现

    本文详细介绍了如何在Mybatis中使用typeHandler对特定字段进行加密处理,涵盖了从引入依赖、配置Mybatis,到实现typeHandler继承类和配置mapper层的详细步骤,为需要在项目中实现字段加密的开发者提供了参考和借鉴
    2024-09-09
  • JAVA获取特定格式时间方式

    JAVA获取特定格式时间方式

    我们有时要获取时间,年月日时分秒周几,有时要以特定的格式出现,本文主要介绍了JAVA获取特定格式时间方式,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Spring如何通过注解存储和读取对象详解

    Spring如何通过注解存储和读取对象详解

    在Spring中,要想更简单的存储和读取对象的核心是使用注解,这篇文章主要给大家介绍了关于Spring如何通过注解存储和读取对象的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • Java中Json解析的方法分析

    Java中Json解析的方法分析

    这篇文章主要介绍了Java中Json解析的方法,结合实例形式分析了java针对json格式数据的解析实现步骤与相关操作技巧,需要的朋友可以参考下
    2017-05-05
  • intellij idea如何配置网络代理

    intellij idea如何配置网络代理

    intellij idea所在的这台电脑本身上不了网,要通过代理上网,那么intellij idea怎么设置代理上网呢?今天通过本文给大家分享intellij idea如何配置网络代理,感兴趣的朋友一起看看吧
    2023-10-10
  • 最优雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企业级应用(附源码)

    最优雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企业级应用(附源码)

    这篇文章主要介绍了最优雅地整合 Spring & Spring MVC & MyBatis 搭建 Java 企业级应用(附源码),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • 又又叕出BUG啦!理智分析Java NIO的ByteBuffer到底有多难用

    又又叕出BUG啦!理智分析Java NIO的ByteBuffer到底有多难用

    网络数据的基本单位永远是byte,Java NIO提供ByteBuffer作为字节的容器,但该类过于复杂,有点难用.本篇文章就带大家简单了解一下 ,需要的朋友可以参考下
    2021-06-06
  • java开发使用StringUtils.split避坑详解

    java开发使用StringUtils.split避坑详解

    这篇文章主要为大家介绍了java开发使用StringUtils.split避坑详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11

最新评论