Spring data mongodb: работа с датами, дата имеет 2 часа разницы - PullRequest
0 голосов
/ 18 января 2019

Этот документ хранится в монго:

{
    "_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 голосов
/ 18 января 2019

Эта дата по зулусскому времени (обратите внимание на 'Z' в конце):

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

Когда вы делаете это, в частности вызов .toString(), вы конвертируете дату в локальную строку даты в вашем часовом поясе, которая выглядит как Zulu + 2:

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

Обычно я устанавливаю часовой пояс моего сервера в UTC / Zulu / GMT, чтобы избежать любых автоматических преобразований часовых поясов, подобных этому.

...