【问题标题】:date gets increased by a day日期增加了一天
【发布时间】:2019-02-08 04:39:57
【问题描述】:

我的 mongodb 数据库中有一个日期,格式如下

{
    "_id" : ObjectId("5b8cd5e5cf36cb517c91910e"),
    "date" : ISODate("2018-09-04T23:58:00.000Z")
}

当我在前端使用 moment 显示它时,它会增加一天,因此 2018-09-04 变为 2018-09-05

在前端我这样做

moment(date).format('dddd MMM DD, YYYY')

我想从2018-09-04的数据库中提取相同的日期

感谢任何帮助。

编辑 ->

当我在后端控制台时,我看到了这个

date: 2018-09-04T23:58:00.000Z

在前端

date: "Thu Sep 06 2018 05:28:00 GMT+0530 (India Standard Time)"

【问题讨论】:

  • 为什么不在您检索数据时在前端代码中简单地增加一天?
  • 当我在前端减去一天时,其他格式相同的日期也会被减去......它只会增加时间为 23:58 或以上然后是 22 的日期: 00

标签: mongodb momentjs


【解决方案1】:

Mongodb 以 ISO 格式存储日期,这取决于您的服务器和客户端所在的位置(在哪个时区)。您可以使用以下内容。 您获得的日期格式是 UTC 格式,当它转换为 IST 时,它会显示差异。这意味着以下内容:-

如果我得到 2019-09-26T18:30:00.000Z 作为 UTC 日期。它相当于 2019 年 9 月 27 日星期五 00:00:00 GMT+0530(印度标准时间)。请查看 5 小时 30 分钟的差异。根据时区,增加/减少任何东西并在 IST 中显示将再次出错。

如果你这样做了

new Date(date).toUTCString()

它将在格林威治标准时间准确显示“2019 年 9 月 26 日星期四 18:30:00 GMT”。

【讨论】:

    【解决方案2】:

    这似乎是一个时区问题。

    如果我跑 console.log(moment('2018-09-04T23:58:00.000Z').utcOffset("+00:00").format()); console.log(moment('2018-09-04T23:58:00.000Z').utcOffset("+05:30").format()); console.log(moment('2018-09-04T23:58:00.000Z').utcOffset("+00:00").format('dddd MMM DD, YYYY')); console.log(moment('2018-09-04T23:58:00.000Z').utcOffset("+05:30").format('dddd MMM DD, YYYY'));

    我明白了 2018-09-04T23:58:00Z 2018-09-05T05:28:00+05:30 Tuesday Sep 04, 2018 Wednesday Sep 05, 2018

    提前一天关闭

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多