0

我将此文档存储在 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")

欢迎对此问题提出任何想法或想法!

4

1 回答 1

0

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

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

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

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

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

于 2019-01-18T12:38:42.883 回答