Moment .isAfter 在比较两个日期时没有正确返回
Moment .isAfter not returning correctly while comparing two dates
我遇到函数 .isAfter() 的问题,在比较“05/04/2022”和“03/05/2022”时它告诉我 05/04/2022>03/ 05/2022
我指定我想通过在参数中添加 'day' 来比较整个日期,但没有任何变化..
有谁可以帮助我吗 ?
这是我的代码:
let date1 = moment("03-05-2022", "DD-MM-YYYY").format("DD-MM-YYYY");
data.forEach(d => {
let test = date1;
let date = moment(d.received_on).format("DD-MM-YYYY");
const {
adc_v,
} = d;
let dateIsAfter = moment(date).isAfter(moment(date1), 'day');
let dateIsSame = moment(date).isSame(moment(date1), 'day');
// const dateIsAfter = moment(date) > moment(date1);
// const dateIsSame = moment(date) == moment(date1);
if (dateIsSame === true) {
this.arrTension.push({
date,
value: adc_v,
});
console.log(date + ' : ' + adc_v);
date1 = moment(date1, "DD-MM-YYYY").add(1, 'days').format('DD-MM-YYYY');
}
if (dateIsAfter === true) {
console.log('date = ' + date);
console.log('date1 = ' + date1);
date1 = moment(date1, "DD-MM-YYYY").add(1, 'days').format('DD-MM-YYYY');
}
});
发生这种情况是因为您没有指定区域设置。
当它比较 05/04/2022>03/05/2022
时,它实际上是在检查 2022 年 5 月 4 日是否大于 2022 年 3 月 5 日。
按如下方式指定全局语言环境:
moment.locale('fr')
然后比较之前的日期:
moment(date).isAfter(moment(date1), 'day');
我更改了格式,现在运行良好 =)
enter code herelet date1 = moment("05-03-2021", "MM-DD-YYYY").format("MM-DD-YYYY");
console.log(date1);
data.forEach(d => {
let test = date1;
let date = moment(d.received_on).format("MM-DD-YYYY");
const {
adc_v,
} = d;
let dateIsAfter = moment(date).locale('fr').isAfter(moment(date1), 'day');
let dateIsSame = moment(date).locale('fr').isSame(moment(date1), 'day');
// const dateIsAfter = moment(date) > moment(date1);
// const dateIsSame = moment(date) == moment(date1);
if (dateIsSame === true ){
this.arrTension.push({
date,
value: adc_v,
});
console.log(date + ' : ' + adc_v);
date1 = moment(date1, "MM-DD-YYYY").locale('fr').add(1, 'days').format('MM-DD-YYYY');
}
if (dateIsAfter === true ){
console.log('date = ' + date);
console.log('date1 = ' + date1);
date1 = moment(date1, "MM-DD-YYYY").locale('fr').add(1, 'days').format('MM-DD-YYYY');
}
});
我遇到函数 .isAfter() 的问题,在比较“05/04/2022”和“03/05/2022”时它告诉我 05/04/2022>03/ 05/2022 我指定我想通过在参数中添加 'day' 来比较整个日期,但没有任何变化.. 有谁可以帮助我吗 ? 这是我的代码:
let date1 = moment("03-05-2022", "DD-MM-YYYY").format("DD-MM-YYYY");
data.forEach(d => {
let test = date1;
let date = moment(d.received_on).format("DD-MM-YYYY");
const {
adc_v,
} = d;
let dateIsAfter = moment(date).isAfter(moment(date1), 'day');
let dateIsSame = moment(date).isSame(moment(date1), 'day');
// const dateIsAfter = moment(date) > moment(date1);
// const dateIsSame = moment(date) == moment(date1);
if (dateIsSame === true) {
this.arrTension.push({
date,
value: adc_v,
});
console.log(date + ' : ' + adc_v);
date1 = moment(date1, "DD-MM-YYYY").add(1, 'days').format('DD-MM-YYYY');
}
if (dateIsAfter === true) {
console.log('date = ' + date);
console.log('date1 = ' + date1);
date1 = moment(date1, "DD-MM-YYYY").add(1, 'days').format('DD-MM-YYYY');
}
});
发生这种情况是因为您没有指定区域设置。
当它比较 05/04/2022>03/05/2022
时,它实际上是在检查 2022 年 5 月 4 日是否大于 2022 年 3 月 5 日。
按如下方式指定全局语言环境:
moment.locale('fr')
然后比较之前的日期:
moment(date).isAfter(moment(date1), 'day');
我更改了格式,现在运行良好 =)
enter code herelet date1 = moment("05-03-2021", "MM-DD-YYYY").format("MM-DD-YYYY");
console.log(date1);
data.forEach(d => {
let test = date1;
let date = moment(d.received_on).format("MM-DD-YYYY");
const {
adc_v,
} = d;
let dateIsAfter = moment(date).locale('fr').isAfter(moment(date1), 'day');
let dateIsSame = moment(date).locale('fr').isSame(moment(date1), 'day');
// const dateIsAfter = moment(date) > moment(date1);
// const dateIsSame = moment(date) == moment(date1);
if (dateIsSame === true ){
this.arrTension.push({
date,
value: adc_v,
});
console.log(date + ' : ' + adc_v);
date1 = moment(date1, "MM-DD-YYYY").locale('fr').add(1, 'days').format('MM-DD-YYYY');
}
if (dateIsAfter === true ){
console.log('date = ' + date);
console.log('date1 = ' + date1);
date1 = moment(date1, "MM-DD-YYYY").locale('fr').add(1, 'days').format('MM-DD-YYYY');
}
});