moment.IsSame 返回错误结果

moment.IsSame returning wrong result

我正在使用 moment isSame,它对两个相同的日期返回 false,

moment(new Date('2070-07-27T21:59:59.999Z')).isSame(moment(new Date('2070-07-27T23:00:58.000Z')), 'day');

以上 returns 虽然是同一天,但还是错误的,感谢任何帮助

如果这不起作用,可以使用什么替代和准确的方法

我对 moment 没有经验,但是

const d1 = new Date('2070-07-27T21:59:59.999Z');
const d2 = new Date('2070-07-27T23:00:58.000Z');
console.log(d1.getDay()); // sunday
console.log(d2.getDay()); // monday

因此,这不是一时的问题。

编辑:可能的 解决方案。 Use the same timezone for both dates.

console.log(d1.getUTCDay() === d2.getUTCDay()); // true (same weekday)

console.log(
  (d1.getUTCDate() === d2.getUTCDate()) &&
  (d1.getUTCMonth() === d2.getUTCMonth()) &&
  (d1.getUTCFullYear() === d2.getUTCFullYear())
); // true (same date)

const moment = require('moment');

const d1 = new Date('2070-07-27T21:59:59.999Z');
const d2 = new Date('2070-07-27T23:00:58.000Z');

const isSame = moment(d1).isSame(moment(d2), 'day');
console.log(isSame); // false

const isSameFixed = moment(d1).utc().isSame(moment(d2).utc(), 'day');
console.log(isSameFixed); // true