本文主要是介绍@JsonFormat与@DateTimeFormat详解以及注意事项总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@JsonFormat
@JsonFormat ,使用该注解前需要添加 jackson 相关的依赖包
用于服务器传给前端json数据时对Date类型时间进行的格式化
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
pattern就表示需要转变的格式,timezone表示处在的时区(国内是东八区)
因为,jackson在序列化时间时是按照国际标准时间GMT进行格式化的,而在国内默认时区使用的是CST时区,两者相差8小时
如果没有用@JsonFormat 对时间进行格式化,返回给前端的将是一个时间戳。如图所示。
使用了@JsonFormat之后,时间格式正确显示。如图所示。
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
注意事项
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
pattern中定义的格式的大小写要注意,不要写错。。。
@DateTimeFormat
@DateTimeFormat是spring的注解,spring工程下不在需要额外引入其他依赖
由于客户端传给服务端的时间参数是字符串类型,如果直接使用java.util.Date
下的Date接受的话,会报400的异常(400异常表示服务器不处理该请求,多半是传入的参数问题)
可以使用@DateTimeFormat将客户端发送过来的时间参数转换成想要的类型
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
pattern定义需要转换的格式(跟前面一样。大小写需要严格定义)
这样
服务端就可以正确接收,打印的时间参数为
Mon Apr 01 16:26:25 CST 2019
注意:@JsonFormat与@DateTimeFormat只是定义时间参数在客户端和服务端之间转换格式,控制台、Debug显示的还是java.util.Date
下的Date类型形式,如果想要转换的话可以自己使用SimpleDateFormat
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
一些特殊情况
-
如果使用
pattern = "yyyy-MM-dd"
接收上述客户端的参数
@DateTimeFormat(pattern = "yyyy-MM-dd")
这样也能正确接收到,但是会将时分秒全部置为00
Mon Apr 01 00:00:00 CST 2019
-
如果使用
pattern = "yyyy-MM-dd HH:mm:ss"
接收客户端传来的没有时分秒的参数
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
会报400异常
如有不正确的还请指示!!!
这篇关于@JsonFormat与@DateTimeFormat详解以及注意事项总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!