【发布时间】:2018-03-21 01:50:28
【问题描述】:
我正在开发一个处理日期的 Spring Boot 应用程序。当我提交具有startDateTime 和endDateTime 的约会对象(两者都是java.util.Date 类型)时,我发送如下格式:
{
"lastName": "Jhon",
"firstName": "Doe",
"email": "jhon.doe@gmail.com",
"description": "MyDescription",
"startDateTime": "2017-10-09T22:43:07.109+0300",
"endDateTime": "2017-10-09T21:40:07.109+0300",
}
当数据保存在数据库中时,它具有正确的时区,当我尝试取回我的数据时,它们在我调试时似乎是正确的,但是一旦它们被 Jackson 序列化,我就会得到一个输出,这些值是:
"startDateTime": "2017-10-09T19:43:07.109+0000",
"endDateTime": "2017-10-09T18:40:07.109+0000",
如何配置 Jackson 以使用我的存储库中的数据附带的时区?
--------更新---------
我用OffsetDateTime 尝试了答案,但输出很奇怪:
"startDateTime": {
"offset": {
"totalSeconds": 7200,
"id": "+02:00",
"rules": {
"fixedOffset": true,
"transitionRules": [],
"transitions": []
}
},
"month": "OCTOBER",
"year": 2017,
"hour": 21,
"minute": 49,
"nano": 654000000,
"second": 15,
"dayOfMonth": 9,
"dayOfWeek": "MONDAY",
"dayOfYear": 282,
"monthValue": 10
}
我想要类似的东西:
2017-10-09T22:43:07.109+0300
【问题讨论】:
-
使用更适合这种情况的 DateTime 类
-
如果
OffsetDateTime字段,您是否使用了JsonFormat注释(如下面我的回答中所示)? -
是的,我添加了这个注释,但仍然没有工作
-
然后将
SerializationFeature.WRITE_DATES_AS_TIMESTAMPS设置为false -
并且还将
JavaTimeModule注册到ObjectMapper(我猜是默认不添加的)
标签: java spring date spring-boot jackson