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