提问人:Keerthana Hemachandran 提问时间:11/10/2023 更新时间:11/10/2023 访问量:93
如何在 Spring Boot 应用程序中将 Date 从 2023-11-10 09:44:00.038860 转换为 2023-11-10T09:44:20.001+00:00
How to convert Date from 2023-11-10 09:44:00.038860 to 2023-11-10T09:44:20.001+00:00 in spring boot application
问:
我正在从 ELK 获取响应并使用 ObjectMapper 将其映射到对象,然后将响应作为 JSON 返回。ELK 响应具有 Date 数据类型字段,格式为 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“或不可解析的日期异常。
谢谢!
答:
0赞
AVI
11/10/2023
#1
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;
}
}
1赞
Basil Bourque
11/10/2023
#2
字符串操作
在您的例子中,最简单的方法是单纯的字符串操作。
String input = "2023-11-10 09:44:00.038860" ;
String result =
input
.replace( " " , "T" )
.substring( 0 , 24 )
.concat( "+00:00" )
;
评论
0赞
mattsmith5
11/11/2023
很好的回答,我刚刚发布了另一个问题,谢谢
评论
SimpleDateFormat
Date
java.time