1.使用Jackson的@JsonFormat注解时出现少一天
比如数据库存的日期是2015-01-05,转成json则变成了2015-01-04
解决办法:
@Temporal(javax.persistence.TemporalType.DATE)
@JsonFormat(pattern = "yyyy-MM-dd")
private Calendar startingTime;
改成
@Temporal(javax.persistence.TemporalType.DATE)
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Calendar startingTime;
设置时区,中国是东八区。
2.设置时区之后,数据库存的时间转成json倒是正常了,但是问题又来了:由json格式时间存入数据库会少一天,即json数据为Tue Oct 03 00:00:00 CST 2017,存入数据库则变成了2017-10-02。原因是Tue Oct 03 00:00:00 CST 2017是Date默认格式显示,需要将其转化为“2017-10-03”这样的格式才能正常存入数据库。
public void setStartingTime(Calendar startingTime) {
sdf = new SimpleDateFormat("yyyy-MM-dd");
str = sdf.format(startingTime.getTime());
try {
date = sdf.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
calendar = Calendar.getInstance();
calendar.setTime(date);
this.startingTime = calendar;
}
OK,问题就解决啦