1.@DateTimeFormat
作用:接受前台的时间格式,传到后台的格式
方法一:在类属性上添加
@DateTimeFormat(pattern=“yyyy-MM-dd”)
@DateTimeFormat是Spring的注解,作用是限制前端传入的时间格式,如果格式不匹配,则会抛出异常,可以理解成一种格式限制,不加该注解,Spring也会将前端传入的时间字符串解析成Date类型
方法二:创建一个类型转换的类
public class DateHandler implements Converter<String, Date>{
@Override
public Date convert(String source) {
Date date = null;
try {if(source.indexOf("-")>0){
date = new SimpleDateFormat("yyyy-MM-dd").parse(source);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
}
2.@JsonFormat
@JsonFormat(pattern=“yyyy-MM-dd”,timezone=“GMT+8”)
@JsonFormat 默认是标准时区的时间,多出现少8小时的情况
使用时,按需求加上时区 北京时间 东八区 timezone=”GMT+8”
作用:后台的时间格式化,发送到前台
3.@JSONField
@JSONField(format=”yyyy-MM-dd”)
@JSONField是fastjson的注解,主要进行JSON解析和序列化,作用是将日期按照指定的格式,格式化为字符串,返回给前端
目前最常的用属性是@JSONField(name=”resType”)和 @JSONField(format=”yyyy-MM-dd”)
name:@JSONField(name=”resType”)主要用于指定前端传到后台时对应的key值,如果bean中没有这个注解,则默认前端传过来的key是field本身,即如果是private String name,name前端对应的key就是name才能对应上。
format :@JSONField(format=”yyyy-MM-dd”)主要用于格式化日期,比如前台传过来的时间是2018-07-12 17:44:08,但是通过这个注解,你存到数据库的时间就是2018-07-12 00:00:00.
4 应用场景记录
场景一
1 应用说明
前端参数传递时间字符串,如 beginTime="2018-07-12",后台用Date类型接受参数.且可用POST请求接受参数,也可用GET请求接受参数.
POST请求:请求体传递参数
GET请求:地址栏拼接传参
2 使用尝试
单独使用@JSONField(format = "yyyy-MM")
- POST请求没有问题
- GET请求报错,反馈,类型转换异常(String -> Date)
3 解决办法
经过尝试,@DateTimeFormat(pattern = "yyyy-MM") @JSONField(format = "yyyy-MM") 同时使用上面两个注解,POST请求和GET请求,均可实现.
4 不解之谜???
1 单独使用 @DateTimeFormat(pattern = "yyyy-MM") 会报错,查阅资料后,发现该注解没有年月的格式,只有年月日的格式,所以报错,即该注解不可单独使用.
2 上面两个注解同时使用为什么没有报错,即@DateTimeFormat(pattern = "yyyy-MM")该注解可以使用,且没有问题
上面问题,暂时没有答案,后续有答案再行补充!!!
附录: 时间模式字符串用来指定时间格式
| 字母 | 描述 | 示例 |
|---|---|---|
| G | 纪元标记 | AD |
| y | 四位年份 | 2001 |
| M | 月份 | July or 07 |
| d | 一个月的日期 | 10 |
| h | A.M./P.M. (1~12)格式小时 | 12 |
| H | 一天中的小时 (0~23) | 22 |
| m | 分钟数 | 30 |
| s | 秒数 | 55 |
| S | 毫秒数 | 234 |
| E | 星期几 | Tuesday |
| D | 一年中的日子 | 360 |
| F | 一个月中第几周的周几 | 2 (second Wed. in July) |
| w | 一年中第几周 | 40 |
| W | 一个月中第几周 | 1 |
| a | A.M./P.M. 标记 | PM |
| k | 一天中的小时(1~24) | 24 |
| K | A.M./P.M. (0~11)格式小时 | 10 |
| z | 时区 | Eastern Standard Time |
| ’ | 文字定界符 | Delimiter |
| " | 单引号 |
如:
yyyy.MM.dd HH:mm:ss 表示24小时制
yyyy.MM.dd hh:mm:ss 表示12小时制
本文详细介绍了前后端如何处理时间格式,包括使用@DateTimeFormat、@JsonFormat和@JSONField等注解,确保时间数据在不同环境下的正确传输与显示。探讨了不同注解的应用场景及相互配合使用的方法。
449

被折叠的 条评论
为什么被折叠?



