【发布时间】:2020-06-29 22:48:19
【问题描述】:
我正在尝试编写一个函数来获取表示日期的字符串数组,然后检查给定日期是否在数组中。但是,即使满足条件,我也总是收到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()));
【问题讨论】:
-
时间会有所不同。 console.log() 你会看到
-
传递日期字符串和传递单个日期组件会导致不同的行为,特别是关于时区。由于时区不同,
getTime()的值不同,所以结果不匹配。 -
伙计们,JS 中的月份从 0 开始作为一月。
-
没有相等的日期。时区可能不同。但是,最好使用
moment.js之类的东西来防止错误。 -
@VLAZ,你读过 Stockafisso 的评论了吗?另外,我很确定只声明“数组中没有相等的元素”并且没有进一步信息的 cmets 犯了同样的错误。
标签: javascript arrays