在springboot中我们需要返回json类型的数据,我们只需要在controller的方法中标注上@ResponseBody注解。
如果我们的pojo实体对象有date类型的数据时,序列化之后可能为这个样子:
2018-10-10T01:30:46.000+0000
这肯定不是我们需要展示给客户的样子,那怎么解决这个问题呢?
我们可以在属性字段上加 @JsonFormat注解:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date modifytime;
或者在set方法上面加这个注解:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
public void setModifytime(Date modifytime) {
this.modifytime = modifytime;
}
注意这里需要指定时区timezone,不这样的话 得到的时间会比当前时间小8个小时
另外还有一个注解我们需要了解:@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss")
@DateTimeFormat会限制传入参数:
如果标注了@DateTimeFormat(pattern = "yyyy-MM-dd hh:mm:ss") 在Modifytime字段上面,则通过表达提交的日期格式也应该是"yyyy-MM-dd hh:mm:ss" 否则会报错
比如我们的pojo:
public class Mypojo {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm" )
private Date modifytime;
private String name;
@Override
public String toString() {
return "Mypojo{" +
"modifytime=" + modifytime +
", name='" + name + '\'' +
'}';
}
public Date getModifytime() {
return modifytime;
}
public void setModifytime(Date modifytime) {
this.modifytime = modifytime;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
我们的controller:
@Controller
public class MyController {
@RequestMapping(value = "test")
@ResponseBody
public Mypojo queryTotalListHisData( Mypojo mypojo) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String strStartTime = sdf.format(new Date());
System.out.println("传入的参数:"+mypojo.getModifytime());
System.out.println(new Date());
System.out.println(strStartTime);
System.out.println(mypojo.toString());
return mypojo;
}
}
如果不加@DateTimeFormat这个注解,那么我们需要传入Tue Dec 11 20:10:09 CST 2018 这样的一个日期格式。