springmvc⽇期格式化注解
格式化命令format参数
⼀ ⼊参格式化
前台请求封装到后台controller中的bean时,如果POJO中有⽇期格式,则报400错误,后台报⾮法参数异常。  因为传⼊的参数是 String 类型的,⽽⽤来接收参数的POJO的属性是 java.util.Date 类型的,类型⽆法转换。
解决⽅式:
1 通过spring的@DateTimeFormat来解决单个pojo的⽇期转换问题
[Java]  纯⽂本查看复制代码
01 02 03 04 05 06 07 08 09 10 11public class DateVo {[/font]
[font=微软雅⿊]    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date date;
public void setDate(Date date){
this.date = date;
}
public Date getDate(){
return date;
}
}
2 通过⾃定义类型转换器来全局解决⽇期格式转换问题
⼆ 出参格式化
当通过jackson进⾏数据返回时,如果要返回时间类型,格式并不是我们想要的,这时可以通过 jackson 的 @JsonFormat 注解来解决[Java]  纯⽂本查看复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14public class DateVo {
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
private Date date;
public void setDate(Date date){
this.date = date;
}
public Date getDate(){
return date;
}
}
虽然时间格式正确了,但与实际时间差了8个⼩时。因为jackson在序列化时间时是按照国际标准时间GMT进⾏格式化的,⽽在国内默认时区使⽤的是CST时区,两者相差8⼩时。所以,@JsonFormat注解还要再加⼀个属性:
[Java]  纯⽂本查看复制代码
1 2 3 4 5@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss" ,
timezone = "GMT+8"
)
private Date date;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。