如何在 Spring Boot 应用程序中将日期从 2023-11-10 09:44:00.038860 转换为 2023-11-10T09:44:20.001+00:00

问题描述 投票:0回答:1

我从 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” 或抛出不可解析的日期异常。 谢谢!

java spring-boot simpledateformat date-conversion
1个回答
0
投票
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;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.