【发布时间】:2021-11-10 07:29:24
【问题描述】:
我有一个将日期设置为 UTC 0 的函数。像这样:
const removeDateTimestamp = (date) => {
return new Date(
date.getUTCFullYear(),
date.getUTCMonth(),
date.getUTCDate(),
0,
0,
0,
0
);
};
但问题在于我使用它的时候。如果我在浏览器的控制台上使用,我会得到以下结果:
2021 年 5 月 15 日星期六 00:00:00 GMT+0200 (hora de verano de Europa central)但是当我在 Jest 上运行测试时,我得到了另一个结果:
Received has type: date
Received has value: 2021-05-14T22:00:00.000Z
it("removeDateTimestamp", () => {
expect(removeDateTimestamp(new Date(2021, 4, 16))).toMatch(
/2021-05-16T00:00:00.000Z/i
);
});
在第一个示例中,我在 2021 年 5 月 15 日星期六 00:00:00 GMT+0200 度过了 16 天,而在第二个示例中,同一天是 14。
我明显忽略了一些重要的东西,但我没有看到它。
【问题讨论】:
-
顺便说一句,当从年、月等值构造日期时,缺失值被视为零(或 1 表示当天),因此
new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()将复制日期,并将时间部分设置为零。 :-)
标签: javascript node.js date jestjs timestamp