前后端时间处理
项目使用的 Jackson 作为输入输出格式处理, 全局 GczjtJavaTimeModule 定义了 可以自动 字符串 <–> 日期时间 转换的规则。 下文讲详细讲解及其其他类型如何转换配置。

public class GczjtJavaTimeModule extends SimpleModule {

public GczjtJavaTimeModule() {
    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)));
}

}

前端传参 String 后端反序列成 Date 对象

日期时间类型均使用 Java8 的日期时间对象, LocalDateTime、LocalDate、LocalTime。

若前端上送时间字符串为以下类型,则后端对应的类型 则可以自动转换。

“yyyy-MM-dd HH:mm:ss” –> LocalDateTime
“yyyy-MM-dd” –> LocalDate
“HH:mm:ss” –> LocalTime

个性化字符串 转换

方式一: 前端转换 | 若使用 element、avue 等均有此属性对提交的值进行格式化,只要格式化成如上格式即可。

方式二: 后端转换 | 总有些场景上送的日期参数是没有方法通过前端格式化(比如其他第三方上送的报文)此时需要在后端进行格式化。
// 前端上送 2020年10月10日11时17分31秒
@Data
public class DemoDTO {
@DateTimeFormat(pattern = “yyyy年MM月dd日HH时mm分ss秒”)
private LocalDateTime fieldName;
}

后端序列化 Date 输出 Json 日期格式

默认输出格式

LocalDateTime –> “yyyy-MM-dd HH:mm:ss”
LocalDate –> “yyyy-MM-dd”
LocalTime –> “HH:mm:ss”

个性化输出

@Data
public class DemoDTO {
@JsonFormat(pattern = “yyyy年MM月dd日HH时mm分ss秒”)
private LocalDateTime fieldName;
}

文档更新时间: 2021-08-10 17:00   作者:admin