没有时间戳值JS日期对象不正确回到哪一天

问题描述 投票:1回答:1

在下面的终端输出,上述 - (接收的)正在被转换moment.js生成的对象对象退回到日期的对象。该+(预期)对象格式new Date("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,
        },

无论是测试代码和测试代码的期望是我的电脑上,所以我不明白为什么日期对象稍微改变,没有人知道为什么吗?这里是我的笑话测试代码:

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},
    ])
});
javascript jestjs
1个回答
1
投票

我猜你住在西半球?如果没有时间戳,Date对象初始化为UTC时间,而不是在您的时区。所以时间会在午夜UTC,但如果您在东部时区的时候,这将是19:00EST前一天。解决的办法是,当你创建你想要的时区添加到日期字符串。

© www.soinside.com 2019 - 2024. All rights reserved.