将 moment.js 转换为 date-fns
Convert moment.js to date-fns
我需要将其从 moment.js moment(date, 'DD MM YYYY').isBefore(moment())
转换为 date-fns。
我试过了isBefore(format(value, 'dd-MM-yyyy'), sub(new Date(), { days: 1 }))
。我提到现在我必须减去 1 天。
因此,功能将是比较 value
,这是给定的日期与 currentDate - 1 天。
本质上,检查是否给出了未来日期(未来日期包括当天)。
希望这已经足够清楚了。我的示例不起作用,我不明白为什么。
您似乎在使用 format
而不是 parse
。 isBefore
接受 number
或 Date
而不是字符串作为其第一个参数。
参见示例:
function compareDate(value: string) {
return isBefore(
parse(value, 'dd-MM-yyyy', new Date()),
sub(new Date(), { days: 1 })
);
}
const test = compareDate('31-12-2020');
console.log(test);
根据评论中的要求
我们可以 运行 函数的值将所有 /
和 \s
替换为 -
.
function unifyDateString(value: string) {
try {
return value.split("/").join("-").split(" ").join("-");
} catch {
return value;
}
}
function compareDate(value: string) {
return isBefore(
parse(unifyDateString(value), "dd-MM-yyyy", new Date()),
sub(new Date(), { days: 1 })
);
}
const one = compareDate("31-12-2020");
const two = compareDate("31/12/2020");
const three = compareDate("31 12 2020");
console.log(one);
console.log(two);
console.log(three);
我需要将其从 moment.js moment(date, 'DD MM YYYY').isBefore(moment())
转换为 date-fns。
我试过了isBefore(format(value, 'dd-MM-yyyy'), sub(new Date(), { days: 1 }))
。我提到现在我必须减去 1 天。
因此,功能将是比较 value
,这是给定的日期与 currentDate - 1 天。
本质上,检查是否给出了未来日期(未来日期包括当天)。
希望这已经足够清楚了。我的示例不起作用,我不明白为什么。
您似乎在使用 format
而不是 parse
。 isBefore
接受 number
或 Date
而不是字符串作为其第一个参数。
参见示例:
function compareDate(value: string) {
return isBefore(
parse(value, 'dd-MM-yyyy', new Date()),
sub(new Date(), { days: 1 })
);
}
const test = compareDate('31-12-2020');
console.log(test);
根据评论中的要求
我们可以 运行 函数的值将所有 /
和 \s
替换为 -
.
function unifyDateString(value: string) {
try {
return value.split("/").join("-").split(" ").join("-");
} catch {
return value;
}
}
function compareDate(value: string) {
return isBefore(
parse(unifyDateString(value), "dd-MM-yyyy", new Date()),
sub(new Date(), { days: 1 })
);
}
const one = compareDate("31-12-2020");
const two = compareDate("31/12/2020");
const three = compareDate("31 12 2020");
console.log(one);
console.log(two);
console.log(three);