Spring数据mongodb:处理日期,日期相差2小时

时间:2019-01-18 10:01:39

标签: spring spring-boot spring-data-mongodb

我已将此文档存储在mongo中:

{
    "_id" : "cpd4-734fc2db-a5b0-4881-b5d7-bf85d894178d",
    "expiresAt" : ISODate("2018-10-10T00:00:00Z")
}

为了确保所有数据都是正确的,我首先获取了文档,并记录了一些数据:

Reference ref = this.mongoTemplate.findById("cpd4-734fc2db-a5b0-4881-b5d7-bf85d894178d", Reference.class);
LOG.info(ref.getExpiresAt().toString());
LOG.info(Long.toString(ref.getExpiresAt().getTime()));

结果是:

Wed Oct 10 02:00:00 CEST 2018    <<<<<<<<<<<<<<<<<<<
1539129600000

如您所见,当我获得对象时,the expiresAt字段是02:00:00而不是00:00:00

数据库中的值为expiresAt,字段为:ISODate("2018-10-10T00:00:00Z")

欢迎对此问题发表任何想法或想法!

1 个答案:

答案 0 :(得分:0)

此日期以祖鲁时间为准(请注意末尾的“ Z”):

ISODate("2018-10-10T00:00:00Z")

执行此操作时,特别是对.toString()的调用,您正在将日期转换为时区中的本地日期字符串,该字符串似乎是Zulu + 2:

LOG.info(ref.getExpiresAt().toString());

我通常将服务器的时区设置为UTC / Zulu / GMT,以避免发生任何自动时区转换。