我在Spring Boot Application中格式化Java 8 LocalDateTime时遇到了一个小问题 . 使用“正常”日期我没有问题,但LocalDateTime字段转换为以下内容:
"startDate" : {
"year" : 2010,
"month" : "JANUARY",
"dayOfMonth" : 1,
"dayOfWeek" : "FRIDAY",
"dayOfYear" : 1,
"monthValue" : 1,
"hour" : 2,
"minute" : 2,
"second" : 0,
"nano" : 0,
"chronology" : {
"id" : "ISO",
"calendarType" : "iso8601"
}
}
虽然我想将其转换为:
"startDate": "2015-01-01"
我的代码看起来像这样:
@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
return startDate;
}
但是上述任何一个注释都不起作用,日期会像上面那样被格式化 . 建议欢迎!
8 回答
这里有maven,因此您可以在 Spring 季启动升级之间生存
我终于找到here怎么做了 . 要修复它,我需要另一个依赖:
通过包含这种依赖性,Spring将自动为它注册一个转换器,如here所述 . 之后,您需要将以下内容添加到application.properties:
这将确保使用正确的转换器,并且日期将以
2016-03-16T13:56:39.492
的格式打印仅在您想要更改日期格式时才需要注释 .
我添加了 com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.1 依赖项,我开始按以下格式获取日期:
这不是我想要的,但我越来越近了 . 然后我添加了以下内容
到application.properties文件,它给了我正确的格式,我需要 .
1)依赖性
2)具有日期时间格式的注释 .
3)Spring Config .
我找到了另一种解决方案,您可以将其转换为您想要的任何格式并应用于所有LocalDateTime数据类型,并且您不必在每个LocalDateTime数据类型之上指定@JsonFormat . 首先添加依赖项:
添加以下bean:
在您的配置文件中添加以下内容:
只要您使用spring创建的objectMapper,这将序列化和反序列化所有属性LocalDateTime和ZonedDateTime .
您为ZonedDateTime获取的格式为:“2017-12-27T08:55:17.317 02:00 [亚洲/耶路撒冷]”对于LocalDateTime是:“2017-12-27T09:05:30.523”
这项工作很好:
添加依赖项:
添加注释:
现在,您必须获得正确的格式 .
要使用对象映射器,您需要注册JavaTime
写这个答案也是对我的提醒 .
我在这里结合了几个答案,最后我使用了类似的东西 . (我使用的是SpringBoot 1.5.7和Lombok 1.16.16)
@JsonDeserialize(using= LocalDateDeserializer.class)
对我来说不适用于以下依赖项 .我使用下面的代码转换器将日期反序列化为
java.sql.Date
.