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
我正在使用 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