use this method to set timezone:
(1)Model field
@JSONField(format = DateTimeJsonFormatSerializer.TIME_FMT)//fastjson,JSON.toJSONString()@JsonSerialize(using = DateTimesonFormatSerializer.class)//jackson,http request/responseprivate Date deliverTime;
(2) DateTimeJsonFormatSerializer.java
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import lombok.extern.slf4j.Slf4j;import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;@Slf4j
public class DateTimeJsonFormatSerializer extends JsonSerializer<Date> {public static final String TIME_FMT="yyyy-MM-dd HH:mm:ss";public DateTimeJsonFormatSerializer() {log.info("DateTimeJsonFormatSerializer default timezone:" + TimeZone.getDefault().getID());}@Overridepublic void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {TimeZone timeZone = TimeZone.getDefault();
// TimeZone timeZone = TimeZone.getTimeZone("Asia/Shanghai");SimpleDateFormat dateFormat = new SimpleDateFormat(TIME_FMT);dateFormat.setTimeZone(timeZone);jsonGenerator.writeString(dateFormat.format(date));}
}
参考:
https://www.iditect.com/program-example/java–set-current-timezone-to-jsonformat-timezone-value.html
https://cloud.tencent.com/developer/article/2063631