Даты и время неверны в MongoDB - PullRequest
0 голосов
/ 22 февраля 2019

Я создаю блог-сайт, который регистрирует время и дату, когда запись публикуется и сохраняется в MongoDB.Когда я запускаю его на локальном компьютере, дата и время указаны правильно.Но когда я принимал его на Heroku, дата показывает, что он на 8 часов опережает мое время.Почему это и как я могу это исправить?Вот ссылка на приложение:

Блог-приложение

Также вот код, который отвечает за размещение записи и регистрацию даты и времени:

app.post("/compose", (req, res) => {
  const postTitle = req.body.postTitle;
  const postBody = req.body.postBody;

  let date = new Date();
  let postDate = date.toLocaleString('en-US');

  const post = new Post({
    date: postDate,
    title: postTitle,
    content: postBody
  });

  post.save(err => {
    if (!err) {
      res.redirect("/");
    }
  });
});

1 Ответ

0 голосов
/ 22 февраля 2019

Мой комментарий становился немного длинным, поэтому я опубликую его здесь как ответ.


toLocaleString только форматирует заданную строку, но время ее отображения все равно будетпривязан к системному времени сервера / клиента, на котором он работает.Так как две машины, на которых вы его пробовали, не находятся в одном и том же часовом поясе, это происходит.

Возможно, вы захотите сохранить сам объект Date, чтобы он был неизменным для любого сервера, на котором вы будете запускать программу.Кроме того, он позволит вам легче выполнять операции с датами, если у вас возникнет такая необходимость.

В качестве альтернативы вы можете передать желаемый часовой пояс toLocaleString следующим образом:

  let date = new Date();
  let postDate = date.toLocaleString("en-US", {timeZone: "America/New_York"});

  const post = new Post({
    date: postDate,
    title: postTitle,
    content: postBody
  });

Более подробную информацию о toLocaleString вы найдете в официальных документах Mozilla

Вы также найдете полный список названий часовых поясов, которые вы можете использовать в этой записи в Википедии: Списокчасовых поясов базы данных tz .Вы можете использовать любой часовой пояс, для которого статус Canonical или Alias.Любой другой часовой пояс выдаст исключение RangeError.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...