当前位置: 首页 > 知识库问答 >
问题:

Spring mvc REST和mongoDB日期字段存在问题

纪翰
2023-03-14

我在返回REST JSON响应中存储在mongob中的日期时遇到了麻烦。我使用的是Spring-MVC 4.2.5@RestController和@响应体。当我在Spring mvc中将集合返回到控制器并将JSON数据返回到客户端时,整个DateTime(JODA)类被jsonish化。我只需要DD-MM-YYYY格式的日期,而不是所有其他属性。我不想将日期存储为monngoDB中的字符串。

这是我如何设置日期:

  DateTime date = new DateTime(DateTimeZone.forID("Asia/Kolkata"));
    booking.setCreatedDate(date);

这是它在MongoDB中的样子。

     "createdDate" : ISODate("2016-04-14T20:26:00.682Z")

以下是我创建响应的方式:

  Object resp;
  booking = getFromMongo(id);
  resp.setBooking(booking)
  return resp;

下面是我的JSON回复

            "createdDate": {
            "year": 2016
            "minuteOfHour": 56
            "weekyear": 2016
            "yearOfEra": 2016
            "hourOfDay": 1
            "era": 1
            "dayOfMonth": 15
            "dayOfWeek": 5
            "dayOfYear": 106
            "secondOfMinute": 0
            "millisOfSecond": 764
            "weekOfWeekyear": 15
            "yearOfCentury": 16
            "monthOfYear": 4
            "centuryOfEra": 20
            "secondOfDay": 6960
            "minuteOfDay": 116
            "millisOfDay": 6960764
            "zone": {
            "uncachedZone": {
            "cachable": true
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            "millis": 1460665560764
            "chronology": {
            "zone": {
            "uncachedZone": {
            "cachable": true
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            "fixed": false
            "id": "Asia/Kolkata"
            }-
            }-
            "equalNow": false
            "beforeNow": true
            "afterNow": false
            }

如何避免将整个DateTime类JSonification。

共有1个答案

巫经义
2023-03-14

要将日期格式化为yyyy MM dd,需要执行以下操作:

1.添加对com.fasterxml.jackson.datatype的依赖:jackson-datatype-joda

2.通过添加spring,将Jackson配置为不将日期格式化为时间戳。杰克逊。序列化。将日期作为时间戳写入应用程序:false。属性文件。

3.用@JsonFormat(pattern=“yyyy-MM-dd”)

这将足以使json响应为yyyy-MM-dd。你可能会面临时区问题。详情如下:https://github.com/FasterXML/jackson-datatype-jsr310/issues/14

 类似资料:
  • 我有一个ISODate格式的“DateAdd”Mongo集合 所以现在是当地时间1小时后 当我尝试获取2018-08-31 06:00:00之后添加的记录时,使用以下查询,我无法获取UTC中的记录 在MongoDB中搜索日期字段时,如何转换UTC日期?

  • 我正在构建一个react应用程序,使用MongoDb和express后端作为数据库。我的一个模型具有属性日期,类型为date。 然后,在我的反应应用程序上,我有一个表单,我在其中输入所有这些信息。但是如果我把一个日期,比如01/11/2017,保存的日期是31/10/2017。据我所知,这是因为MongoDd以UTC格式存储日期。有没有办法改变这种行为?因为同样,当我尝试按日期搜索时,这个问题也给

  • 问题内容: 有人可以向我解释为什么以下过滤器在月份和日期级别上不起作用吗?按年份进行过滤似乎有效,但其他两个方法却无效。 快速更新以演示在创建和处理查询集之前我得到了相同的行为: 这里有更多值得深思的地方: 问题答案: @SimonWilder完美地回答了为什么它不起作用的问题,这是您可以在不禁用Django中的TZ支持的情况下实际解决它的方法 Django文档给出了将时区定义安装到数据库的指令:

  • 问题内容: 在我的收藏夹中,每个文档都有2个修改和同步的日期。我想查找已修改>同步,或不存在同步的内容。 我试过了 但没有显示我的期望。有任何想法吗? 谢谢 问题答案: 您不能将一个字段与具有正常查询匹配的另一个字段的值进行比较。但是,您可以使用聚合框架执行此操作: 我在其中输入“您的其他常规查询”,因为您可以使该位使用索引。因此,如果您只想对该字段所在的文档执行此操作,则可以执行以下操作: 用输

  • 我有一个java实体类TimeEntry.java它的属性之一是Date,它看起来像这样。 对于该字段,在swagger UI模型模式上,字段日期显示为“日期”:“2016-01-08T22:34:22.337Z”,但我需要该字段作为“日期”:“2016-01-08”。 我尝试了以下方法: 请帮帮忙。

  • 我已经按照 Spring.io 指南访问了MongoDB数据,https://spring.io/guides/gs/accessing-mongodb-data-rest/,并且可以将文档保存到mongo中。 当我试图在POJO中添加一个日期字段并将日期设置为< code>new Date()对象时,它只是在保存到mongo时将值保存为null。 我创建了一个非常基本的,它工作正常(传入请求正文