微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 moment.js 转换为 date-fns

如何解决将 moment.js 转换为 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 而不是 parseisBefore 接受 numberDate 而非字符串作为其第一个参数。

参见示例:

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",{ 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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。