Spring Boot中的JSON Java 8 LocalDateTime格式

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (71)

我在Spring Boot应用程序中格式化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;
}

但是,上述任何一个注释都不起作用,日期不断变得像上面那样格式化。

提问于
用户回答回答于

我终于在这里找到如何去做。为了解决这个问题,我需要另一个依赖:

compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.4.0")

通过包括这种依赖关系,Spring会自动注册一个转换器,它作为描述在这里。之后,您需要将以下内容添加到application.properties中:

spring.jackson.serialization.write_dates_as_timestamps=false

这将确保使用正确的转换器,日期将以格式打印 2016-03-16T13:56:39.492

仅当您想更改日期格式时才需要注释。

用户回答回答于

我添加了com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.1依赖关系,我开始按以下格式获取日期:

"birthDate": [
    2016,
    1,
    25,
    21,
    34,
    55
  ]

这不是我想要的,但我越来越近了。然后我添加了以下内容

spring.jackson.serialization.write_dates_as_timestamps=false

到application.properties文件,它给了我需要的正确格式。

"birthDate": "2016-01-25T21:34:55"

扫码关注云+社区