首页 > 其他分享 >LocalDateTime兼容日期格式

LocalDateTime兼容日期格式

时间:2023-11-08 23:00:54浏览次数:25  
标签:recordTime 兼容 yyyy HH LocalDateTime 格式

LocalDateTime兼容日期格式

触发场景:在工作中要接收前端传递的时间类型的数据,我默认设置的是接收"yyyy-MM-dd HH:mm:ss"格式的数据,例如:“recordTime”:“2018-12-25 13:10:45”,但是因为我设置的格式原因,当前端传递的参数格式为"recordTime":"2018-12-3 13:10:45"时,则会报错。为了兼容两种日期格式,所以进行了一下探索,解决方案有两种。

**

方法一:新建一个类重写JsonDeserializer类的deserialize方法。下面直接上代码。

**

public class CustomDeserializer extends JsonDeserializer {

//兼容生长曲线纪录中前端可能会传递的recordTime格式为yyyy-MM-d HH:mm:ss的参数

public static final DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-d HH:mm:ss");

@Override

public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws RuntimeException {

try{

if(p !=null && StringUtils.isNotEmpty(p.getText())){

return LocalDateTime.parse(p.getText(),format);

}else{

return null;

}

}catch (Exception e){

System.out.println(e.getMessage());

throw new RuntimeException();

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

然后在实体类中使用该方法的解析字段set方法上面加上注解。

@JsonDeserialize(using = CustomDeserializer.class)

public void setRecordTime(LocalDateTime recordTime) {

this.recordTime = recordTime;

}

1

2

3

4

这样就可以成功解析"recordTime":"2018-12-3 13:10:45"这样格式的字段了。

**

方法二:在实体类上重写JsonFormat注解。

**

在实体类的时间字段上协商@JsonFormat注解。

@JsonFormat(pattern = "yyyy-M-d HH:mm:ss")

private LocalDateTime recordTime;

1

2

这样就可以解析月和日都是单数的情况,同时也兼容双数的情况。

如:2019-1-1和2019-01-01均能被接收到。


标签:recordTime,兼容,yyyy,HH,LocalDateTime,格式
From: https://blog.51cto.com/u_16265692/8261508

相关文章

  • 各种文件格式解释
    皮肤诊断系统常文件格式.name:通常用于标识个人名称或组织。它可能是一个文本文件,包含有关个人或组织的详细信息。.xml:是可扩展标记语言(ExtensibleMarkupLanguage)的扩展名。XML是一种用于存储和传输数据的标记语言,被广泛用于网页设计、数据存储和交换等。.iml:是IntelliJIDEA项......
  • 11月7日css介绍、基本格式、样式、选择器
    目录1.css介绍2.css基本格式3.css的几种引入方式1.行内样式2.内部样式3.外部样式css选择器基本选择器1.元素(标签)选择器2.id选择器3.类选择器通用选择器组合选择器1.后代选择器2.子元素选择器3.相邻兄弟选择器通用兄弟选择器属性选择器分组选择器伪类选择器第一个实例给未访问的链......
  • 【U盘格式NTFS,FAT32,exFAT切换方法及各种文件系统区别】
    切换U盘格式步骤:1、格式化前,先确认把U盘离的数据进行备份,插入U盘,右击鼠标->点击格式化 2、进入格式化弹窗界面,选择所要修改的文件系统->点击开始->确定 各种文件系统区别:NTFS(NewTechnologyFileSystem意为新技术文件系统,其功能全面,应用最广泛。NTFS:1、NTFS这种格式的......
  • JS 获取几天后的日期格式
    functiongetDateStr(addDayCount,a){ vardd=newDate(); dd.setDate(dd.getDate()+addDayCount);//获取addDayCount天后的日期 vary=dd.getFullYear(); varm=(dd.getMonth()+1)<10?"0"+(dd.getMonth()+1):(dd.getMonth()+1);//获取当前月份的日期,不足10补0 var......
  • JSTL fmtformatNumber日期、 数字、货币格式化
    JSTLfmt:formatNumber日期、数字、货币格式化使用<fmt>标签应先导入<%@taglibprefix="fmt"uri="http://java.sun.com/jsp/jstl/fmt"%>其uri可在fmt.tld文件下 1、日期格式化<fmt:formatDatevalue=“${XXX.date}”pattern=“yyyy-MM-ddHH:mm:ss”/> value:要......
  • 【Java SE】String.format格式化
    String.format1、字符串左对齐,不足10位的右侧补空格:[123      ]String.format("%-10s","123");2、字符串右对齐,不足10位的左侧补空格:[      123]String.format("%10s","123");3、整数格式化10位,不足左侧补0:[0000000123]String.format("%010d",123) ......
  • 解决升级到 Delphi 12 后遇到 SQLite 不兼容的问题
    今天升级到Delphi12后,编译运行原来的项目,出现“[FireDAC][Phys][SQLite][sqlite3]-303.Capabilityisnotsupported”的错误。经过查找文档,发现是FireDACSQLite版本更新导致的。RADStudio12.0支持SQLite3.42,同时保留了使用FireDAC加密(FDE)的SQLite3.31.1的选项......
  • @RequestBody接收Json参数 用自定义注解对Vo对象中Date类型日期格式校验
    @RequestBody接收Json参数|用自定义注解对Vo对象中Date类型日期格式校验问题描述昨天测试的同事测试接口的时候,测试出来一个Date类型校验问题。要求输入的日期格式是:yyyy-MM-ddHH:mm:ss,Vo中使用的注解如下:@DateTimeFormat(pattern=”yyyy-MM-ddHH:mm:ss”)测试同事输入下面两种......
  • LocalDateTime与String之间的转换
    LocalDateTime类型转换String类型publicstaticvoidmain(String[]args){DateTimeFormatterfmt=DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss");LocalDateTimelocalDateTime=LocalDateTime.now();StringdateStr=localDateTime.format(fmt);System.out.p......
  • C# 关于导出的Excel设置批注 设置格式为int类型 设置字体
    将数据导出,导出Excel有时候需要一些条件,比如:1.需要给某一列的表头加批注;2:需要设置某一列为int格式1.给某一列的表头加批注1List<string>texts=newList<string>();2List<int>ids=newList<int>();3texts.Add("......