Javascript 没有时间戳值的JS日期对象错误地返回一天

Javascript 没有时间戳值的JS日期对象错误地返回一天,javascript,jestjs,Javascript,Jestjs,在下面的终端输出中,通过将moment.js对象转换回Date对象来生成-(received)对象。+(预期)对象是以新日期(“2018-05”)的格式创建的,并且似乎损失了足够多的时间,可以追溯到上个月最后一天的下午5点: Object { - "x": 2018-05-01T00:00:00.000Z, + "x": 2018-04-30T17:00:00.000Z, "y": 260, },

在下面的终端输出中,通过将moment.js对象转换回Date对象来生成-(received)对象。+(预期)对象是以
新日期(“2018-05”)
的格式创建的,并且似乎损失了足够多的时间,可以追溯到上个月最后一天的下午5点:

        Object {
    -     "x": 2018-05-01T00:00:00.000Z,
    +     "x": 2018-04-30T17:00:00.000Z,
          "y": 260,
        },
        Object {
    -     "x": 2018-06-01T00:00:00.000Z,
    +     "x": 2018-05-31T17:00:00.000Z,
          "y": 160,
        },
        Object {
    -     "x": 2018-07-01T00:00:00.000Z,
    +     "x": 2018-06-30T17:00:00.000Z,
          "y": 40,
        },
测试代码和测试期望代码都在我的计算机上,所以我不明白为什么日期对象会有轻微的变化,有人知道为什么吗?以下是我的jest测试代码:

test('raw data is properly totalled (prepareData)', () => {
  expect(lineChart.prepareData(mockXYObjects(dataCloneMultiplier), 12, "month"))
    .toStrictEqual([
      {x : new Date("2018-05"), y : 13 * dataCloneMultiplier},
      {x : new Date("2018-06"), y : 8 * dataCloneMultiplier},
      {x : new Date("2018-07"), y : 2 * dataMultiplier},
    ])
});

我猜你住在西半球?如果没有时间戳,日期对象将初始化为UTC时间,而不是在时区中。所以时间是UTC的午夜,但是如果你在东部时区,前一天的时间是19:00EST。解决方案是在创建日期字符串时将所需时区添加到该字符串。

Ahh,这将解释它。我将了解如何将时区偏移添加到date对象