提问者:小点点

即使满足条件,Array.some()也始终为false


我正在尝试编写一个函数,它获取一个表示日期的字符串数组,然后检查给定的日期是否在数组中。 但是,即使满足条件,我总是得到false

下面是一个最小代码:

let dates = ['2020-06-29', '2020-07-13'];
dates = dates.map(some_day => new Date(some_day));
const someDay = new Date(2020, 5, 29);
console.log(dates.some(some_day => some_day.getTime() === someDay.getTime()));

编辑1:(仍然不工作但我正在改进代码)

let dates = ['2020-06-29', '2020-07-13'];
dates = dates.map(some_day => new Date(some_day));
let someDay = new Date(2020, 5, 29);
const date_string = `${someDay.getFullYear()}-${someDay.getMonth() + 1}-${someDay.getDate()}`;
someDay = new Date(date_string);
console.log(dates.some(some_day => some_day.getTime() === someDay.getTime()));

共1个答案

匿名用户

由于时区差异,要么操作timezoneoffset,要么:

dates.some(some_day => 
  (
    (some_day.getFullYear() === someDay.getFullYear()) &&
    (some_day.getMonth() === someDay.getMonth()) &&
    (some_day.getDate() === someDay.getDate())
  )
)