我从 ELK 获取响应并使用 ObjectMapper 将其映射到对象,然后以 JSON 形式返回响应。 ELK 响应有一个日期数据类型字段,格式为 yyyy-MM-dd HH:mm:ss.SSSSSS。检索到的 ELK 响应采用 UTC 格式,我希望 API JSON 响应也采用 UTC 格式。所以不需要时区转换。 我希望 JSON 负载以格式 2023-11-09T03:00:35.563+00:00 显示日期字段。它尝试在字段上设置 @JsonFormat 但没有成功。
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS")
private Date timestamp;
我尝试使用多种格式 yyyy-MM-dd'T'HH:mm:ss.SSSX 或 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'。但抛出同样的异常。
还尝试了以下方法,
SimpleDateFormat out = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
mapper.setDateFormat(out);
SimpleDateFormat in = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
SimpleDateFormat out = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS");
String dateIn = in.format(Obj.getTimestamp());
Date dateOut = out.parse(dateIn);
我使用的格式是否正确 2023-11-09T03:00:35.563+00:00? 抛出的异常是 抛出异常[无法从字符串“2023-11-10 09:44:00.038860”反序列化
java.util.Date
类型的值:预期格式“yyyy-MM-dd'T'HH:mm:ss.SSSSSS”
或抛出不可解析的日期异常。
谢谢!
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class YourResponseObject {
private Date yourDateField;
// Getter method for the Date field
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss.SSSSSS")
public Date getYourDateField() {
return yourDateField;
}
public void setYourDateField(Date yourDateField) {
this.yourDateField = yourDateField;
}
}