Py学习  »  MongoDB

MongoDB中的日期和时间错误

envincebal • 5 年前 • 592 次点击  

我正在建立一个博客网站,记录在MongoDB中发布和存储条目的时间和日期。当我在本地机器上运行它时,日期和时间是正确的。但当我在Heroku上主持时,日期显示它比我的时间提前了8个小时。这是为什么?我如何修复?以下是应用程序的链接:

Blog App

此外,这里还有负责发布条目和记录日期和时间的代码:

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("/");
    }
  });
});
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30799
 
592 次点击  
文章 [ 1 ]  |  最新文章 5 年前
MadWard
Reply   •   1 楼
MadWard    5 年前

我的评论有点冗长,所以我会把它作为答案贴在这里。


toLocaleString 仅格式化给定的字符串,但显示的时间仍将与运行该字符串的服务器/客户机的系统时间相关联。 因为您尝试使用的两台机器不在同一时区,所以会发生这种情况。

您可以考虑存储 Date 对象本身,因此它与运行程序的任何服务器都是不变的。另外,如果您有需要,它可以让您更容易地进行日期操作。

或者,你可以通过你想要的时区 托卡拉弦 像这样:

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

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

您将在 托卡拉弦 official Mozilla docs

您还可以在此维基百科条目中找到可使用的时区名称的综合列表: List of tz database time zones . 您可以使用状态为的任何时区 Canonical Alias . 任何其他时区都会 RangeError 例外。