在下面的终端输出中,通过将moment.js对象转换回Date对象来生成-(已接收)对象。 +(预期)对象以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},
])
});
答案 0 :(得分:1)
我猜你住在西半球吗?没有时间戳,Date对象将初始化为UTC时间,而不是您所在的时区。因此,时间将是UTC的午夜,但如果您是东部时区,则将是前一天的19:00EST。解决方案是在创建日期字符串时将所需的时区添加到日期字符串中。