Spring Data MongoDb中处理日期的最佳实践

时间:2017-04-12 21:07:45

标签: spring-data-mongodb

我在处理项目中的日期方面遇到了一些问题。这就是我所拥有的。

  • 在我的实体中,我使用的是ZonedDateTime。

私人ZonedDateTime assignedOn;

  • 在Spring中配置转换器来处理这个

    public static class ZonedDateTimeToDateConverter实现Converter {     public static final ZonedDateTimeToDateConverter INSTANCE = new ZonedDateTimeToDateConverter();     private ZonedDateTimeToDateConverter(){}

        @Override
        public Date convert(ZonedDateTime source) {
            return source == null ? null : Date.from(source.toInstant());
        }
    }
    
    public static class DateToZonedDateTimeConverter implements Converter<Date, ZonedDateTime> {
        public static final DateToZonedDateTimeConverter INSTANCE = new DateToZonedDateTimeConverter();
        private DateToZonedDateTimeConverter() {}
    
        @Override
        public ZonedDateTime convert(Date source) {
            return source == null ? null : ZonedDateTime.ofInstant(source.toInstant(), ZoneId.systemDefault());
        }
    }
    
  • 我看到数据作为ISO日期存储在Mongodb中。这就是我在Mongodb看到的。

&#34; completed_on&#34; :ISODate(&#34; 2017-04-12T20:02:40.000 + 0000&#34;),

我的问题与使用Spring查询这些日期字段有关。如果我想找到仅匹配日期部分而不是时间部分的所有记录(等于运算符),那么该方法应该是什么?我在这个帖子中看到了例子

Spring data mongodb search for ISO date

这表明这样的事情。

query.addCriteria(Criteria.where("created").ne(null).andOperator(
                Criteria.where("created").gte(DateUtils.getDate("2016-04-14 00:00:00", DateUtils.DB_FORMAT_DATETIME)),
                Criteria.where("created").lte(DateUtils.getDate("2016-04-14 23:59:59", DateUtils.DB_FORMAT_DATETIME))
            ));

只是想看看这是否是唯一的方法还是另外一种优雅的方式来做到这一点?

0 个答案:

没有答案