如何在Spring Boot应用中优雅的使用Date和LocalDateTime的教程详解

2020-07-01 13:00 来源:易采站长站 作者:王振洲 点击: 评论:

A-A+

原标题:如何在Spring Boot应用中优雅的使用Date和LocalDateTime的教程详解

Java8已经发布很多年了,但是很多人在开发时仍然坚持使用着DateSimpleDateFormat进行时间操作。SimpleDateFormat不是线程安全的,而Date处理时间很麻烦,所以Java8提供了LocalDateTimeLocalDateLocalTime等全新的时间操作API。无论是Date还是LocalDate,在开发Spring Boot应用时经常需要在每个实体类的日期字段上加上@DateTimeFormat注解来接收前端传值与日期字段绑定,加上@JsonFormat注解来让返回前端的日期字段格式化成我们想要的时间格式。时间和日期类型在开发中使用的频率是非常高的,如果每个字段都加上这两个注解的话是非常繁琐的,有没有一种全局设置的处理方式呢?今天就来向大家介绍一下。

注:本文基于Springboot2.3.0版本。

根据不同的请求方式需要做不同的配置,下文中分为了JSON方式传参和GET请求及POST表单方式传参两种情况。

JSON方式传参

这种情况指的是类型POST,Content-Type 是application/json 方式的请求。对于这类请求,controller中需要加上@RequestBody注解来标注到我们用来接收请求参数的局部变量上,代码如下:

@SpringBootApplication
@RestController
public class SpringbootDateLearningApplication {

 public static void main(String[] args) {
  SpringApplication.run(SpringbootDateLearningApplication.class, args);
 }
 
  /**
  * DateTime格式化字符串
  */
 private static final String DEFAULT_DATETIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

 /**
  * Date格式化字符串
  */
 private static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd";

 /**
  * Time格式化字符串
  */
 private static final String DEFAULT_TIME_PATTERN = "HH:mm:ss";

 public static class DateEntity {
  private LocalDate date;

  private LocalDateTime dateTime;

  private Date originalDate;

  public LocalDate getDate() {
   return date;
  }

  public void setDate(LocalDate date) {
   this.date = date;
  }

  public LocalDateTime getDateTime() {
   return dateTime;
  }

  public void setDateTime(LocalDateTime dateTime) {
   this.dateTime = dateTime;
  }

  public Date getOriginalDate() {
   return originalDate;
  }

  public void setOriginalDate(Date originalDate) {
   this.originalDate = originalDate;
  }

 }

 @RequestMapping("/date")
 public DateEntity getDate(@RequestBody DateEntity dateEntity) {
  return dateEntity;
 }
} 

假设默认的接收和返回值的格式都是yyyy-MM-dd HH:mm:ss,可以有以下几个方案。

配置application.yml 文件

在application.yml文件中配置上如下内容:

spring:
 jackson:
 date-format: yyyy-MM-dd HH:mm:ss
 time-zone: GMT+8

小结:

支持Content-Type 是application/json的POST请求,请求参数字符串和返回的格式都是

【易采站长站编辑:秋军】