用法:为在属性值上 @JsonFormat(pattern=”yyyy-MM-dd”,timezone=”GMT+8”),如果直接使用 @JsonFormat(pattern=”yyyy-MM-dd”)就会出现2018-08-01 08:00:00的情况, 会相差8个小时,因为我们是东八区(北京时间)。所以我们在格式化的时候要指定时区(timezone )
具体代码:
实体类:
package com.zyp.test.json;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @author syl
* @description TODO
* @since 2022/8/22
*/
@Data
public class Order {
@ApiModelProperty(value = "用户id")
private Integer userId;
@ApiModelProperty(value = "订单id")
private Integer orderId;
@ApiModelProperty(value = "订单名称")
private String orderName;
/**
* timezone = "GMT+8"表示东八区
*/
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date createTime;
@ApiModelProperty(value = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime1;
}
测试类:
package com.zyp.test.json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.zyp.test.ObjectMapperUtil;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author syl
* @description TODO
* @since 2022/8/22
*/
public class Test {
public static void main(String[] args) throws JsonProcessingException {
Order order=new Order();
order.setUserId(1);
order.setOrderId(1);
order.setOrderName("订单1");
String now = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
System.out.println("now = " + now);
order.setCreateTime(new Date());
order.setCreateTime1(new Date());
System.out.println(ObjectMapperUtil.ObjectToString(order));
}
}
输出结果为:
now = 2022-08-22 11:21:23
{"userId":1,"orderId":1,"orderName":"订单1","createTime":"2022-08-22 11:21:23","createTime1":"2022-08-22 03:21:23"}
从结果可以看出createTime1的结果不对,少了8个小时,所以要输出北京时间的时候需要加上timezone = “GMT+8”