MongoDB按日期查询始终提供当前日期

MongoDB按日期查询始终提供当前日期,mongodb,java-8,Mongodb,Java 8,当我根据日期字段进行查询时,我得到的所有属性都是正确的,但日期字段始终是当前日期。为什么会这样?我正在使用Java8Spring和MongoRepository实现。在集合中是日期字段,在java对象中也是日期 我将其更改为LocalDateTime,但仍然提供当前日期。将其更改为ZonedDateTime不起作用,因为java不会自动将DB date对象转换为ZonedDateTime 如何使用date查询mongoDB,date将返回数据库中的实际日期值,而不是当前日期 Java DB对象:

当我根据日期字段进行查询时,我得到的所有属性都是正确的,但日期字段始终是当前日期。为什么会这样?我正在使用Java8Spring和MongoRepository实现。在集合中是日期字段,在java对象中也是日期

我将其更改为LocalDateTime,但仍然提供当前日期。将其更改为ZonedDateTime不起作用,因为java不会自动将DB date对象转换为ZonedDateTime

如何使用date查询mongoDB,date将返回数据库中的实际日期值,而不是当前日期

Java DB对象:

@Document(collection = "XXX")
public class XXX{
@Field(value= "ts")
private Date timestamp;
MongoDB文件:

{ 
"_id" : ObjectId("--------"), 
"ts" : ISODate("2016-11-29T21:22:00.000+0000") 
}
存储库:

@Query(value = "{'regId': ?0, 'ts': {'$lte': ?1}}")
Page<T> findAllByRegId(ObjectId regId, Date timeStamp, Pageable pageable);

ts始终以当前时间戳返回,但以DB为单位,它的值为2016-11-29T21:22。

打印时显示本地时区值的java util date toString表示存在问题

因此,对于Java8,您可以将它们从util日期切换到本地日期时间

LocalDateTime datetime = LocalDateTime.ofInstant(ts.toInstant(), ZoneId.of("America/New_York"))

打印时显示本地时区值的java util date-toString表示存在问题

因此,对于Java8,您可以将它们从util日期切换到本地日期时间

LocalDateTime datetime = LocalDateTime.ofInstant(ts.toInstant(), ZoneId.of("America/New_York"))

你能添加一个例子吗?更容易遵循这不是真的,它是基于驱动程序。还可以检查返回日期中的毫秒值。打印可以发生在本地时区。我猜你的毫秒值是正确的,它是你的db值,只是当打印日期显示在本地时区时。你可以调试日期值中的毫秒吗?毫秒是从历元开始的。它包括日期和时间。这里没有什么需要解决的。这一切都很好,只需忽略打印值即可。您打算如何处理从db获得的日期?您可以根据需要将日期更改为java 8即时和分区日期时间或本地日期时间。你能给我举个例子吗?更容易遵循这不是真的,它是基于驱动程序。还可以检查返回日期中的毫秒值。打印可以发生在本地时区。我猜你的毫秒值是正确的,它是你的db值,只是当打印日期显示在本地时区时。你可以调试日期值中的毫秒吗?毫秒是从历元开始的。它包括日期和时间。这里没有什么需要解决的。这一切都很好,只需忽略打印值即可。您打算如何处理从db获得的日期?您可以根据需要将日期更改为java 8即时和分区日期时间或本地日期时间。这样做一切都会好起来的