我收到了一个字符串格式的JSON,我使用Gson库将其转换为Java对象类。在该JSON中,DateTime字段用**@DateTimeFormat(pattern =“yyyy-MM-dd HH:mm:ss”)注解,原始日期格式为“creationDate”:“2022-10- 25 T10:38:32.000+01:00”在将JSON转换为Java对象类之后,DateTime字段的格式更改为Tue Oct 25 15:08:32 IST 2022**,而不是将其转换为所需的格式。
@Data
public class Root{
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
public Date creationDate;}
下面是一个如何将字符串转换为Java对象类的示例
String fileContent = Files.readString(Path.of"**Path of the file**"));
Root root = new Gson().fromJson(fileContent, Root.class);
JSON示例:
root{
"creationDate":"2022-10-25T10:38:32.000+01:00"
}
我不明白为什么会发生这种情况。我知道我可以使用新的SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”)转换它。parse(sDate 1)但我想知道为什么@annotation不起作用
2条答案
按热度按时间chhqkbe11#
您可以在日期字段上尝试以下Jackson注解来格式化日期:-
hgqdbh6s2#
Date
(旧的过时样式)、LocalDateTime
、ZonedDateTime
不具有固有格式。在
System.out.println(new Date());
中使用的Date的toString()给出了您看到的格式。“2022-10- 25 T10:38:32.000+01:00”是ISO标准格式,
T
表示时间部分的开始。它是OffsetDateTime
的格式,仍然与区域设置(国家/地区)无关,并且不处理夏令时。ZonedDateTime
会更好。对于其他格式变体,您可以使用
DateTimeFormatter
。