@DateTimeFormat注解

前言

前言在使用@DateTimeFormat进行格式化注解时,总是不能匹配前端传入的。格式总是报错

在这里插入图片描述
我这里使用的是pattern进行解析的的但是前端是给我传入的ISO类型的导致不能匹配所以总是报错。后来我们进行查看源码得到了答案。
源码解析
看下源码解析:
在这里插入图片描述
在这里插入图片描述

那么我们来看下。后端使用@DateTimeFormat 注解时处理时间前前端应该如何传值。

  1. 使用 @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) 使用iso属性即代表前端需要出入ISO标准时间
    var date = new Date()
    date.toISOString()
    // 国际标准组织(ISO)格式,输出:‘2021-11-26T06:07:15.870Z’
    date.toJson()
    // 和上面的一致(ISO格式)。 输出:‘2021-11-26T06:07:15.870Z’
  2. 使用 @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocateDate date 使用ISO属性是传入的ISO标准的日期
    var date = new Date()
    date.format(“yyyy-MM-dd”);// “2021-11-26”
  3. 使用 @DateTimeFormat(iso = DateTimeFormat.ISO.Time) LocaDateTime dateTime 使用ISO属性是传入的ISO标准的日期
    var date = new Date()
    js将其格式化为 "01:30:00.000-05:00’
  4. 使用@DateTimeFormat(parttern=“yyyy-MM-dd”) 使用字符串格式化车成为日期。这里的parttern可以自定义成其他的类型
    var date = new Date()js将其格式化为字符串 "yyyy-MM-dd"即可。

我们再看一下总结:

@DateTimeFormat注解可对java.util.Date,java.util.Calendar,java.long.Long以及Joda时间类型的属性进行标注,有以下几个互斥属性三个属性不能同时使用:

● iso:类型为DateTimeFormat.ISO.有以下几个常用的可选值。DateTimeFormat.ISO.DATE:格式为yyyy-MM-dd.
DateTimeFormat.ISO.DATE_TIME:格式为yyyy-MM-dd hh:mm:ss.SSSZ.
DateTimeFormat.ISO.TIME:格式为hh:mm:ss.SSSZ.
DateTimeFormat.ISO.NONE:表示不应使用ISO格式化时间.
● pattern:类型为String,使用自定义的时间格式化串,如"yyyy/mm/dd h:mm:ss".
● style:类型为string,通过样式指定日期时间格式,由两位字符组成,第一位带代表日期,第二位标识时间格式一下是几个常用的可选值
S:短日期/时间的格式
M:中日期/时间格式
L:长日期/时间的格式
F:完整日期/时间的格式
-:忽略日期/时间的格式

同时我们看下前端对日期的处理的都要哪些函数

var d = new Date();
console.log(d); // 输出:Mon Nov 04 2021 21:50:33 GMT+0800 (中国标准时间)
console.log(d.toDateString()); // 日期字符串,输出:'Fri Nov 26 2021'
console.log(d.toGMTString()); // 格林威治时间,输出:'Fri, 26 Nov 2021 07:03:27 GMT'
console.log(d.toISOString()); // 国际标准组织(ISO)格式,输出:2021-11-26T06:07:15.870Z
console.log(d.toJSON()); // 输出:22021-11-26T06:07:15.870Z
console.log(d.toLocaleDateString()); // 转换为本地日期格式,视环境而定,输出:'2021/11/26'
console.log(d.toLocaleString()); // 转换为本地日期和时间格式,视环境而定,输出:'2021/11/26 下午3:02:30'
console.log(d.toLocaleTimeString()); // 转换为本地时间格式,视环境而定,输出:'下午3:03:48'
console.log(d.toString()); // 转换为字符串,输出:'Fri Nov 26 2021 15:01:26 GMT+0800 (中国标准时间)'
console.log(d.toTimeString()); // 转换为时间字符串,输出:'15:01:40 GMT+0800 (中国标准时间)'
console.log(d.toUTCString()); // 转换为世界时间,输出:'Fri, 26 Nov 2021 07:01:56 GMT'

同样更加推荐使用moment.js这个函数库对时间进行处理。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐