接收字符串并使用 date-fns 验证它是否是有效日期

问题描述

我只想验证我收到的字符串是否是使用 date-fns 的有效日期。 我会收到一个像这样的日期“29/10/1989”,BR 日期。 我想把它转换成 29-10-1989 并检查它是否有效。 任何人都可以帮助我吗?

const parsedDate = parseISO('29/10/1989')

上面的代码不起作用,我得到了“无效日期”

解决方法

试试 parselocale 这样的选项:

import { parse,isValid,format } from 'date-fns';
import { enGB } from 'date-fns/locale';

const parsedDate = parse('29/10/1989','P',new Date(),{ locale: enGB });
const isValidDate = isValid(parsedDate);
const formattedDate = format(parsedDate,'dd-MM-yyyy');
,

我想出了这个(基于 Anatoly 的回答):

import { parse,format } from 'date-fns';
import { enGB } from 'date-fns/locale';

function isValidDate(day,month,year) {
  const parsed = parse(`${day}/${month}/${year}`,{ locale: enGB })
  return isValid(parsed)
}

console.log(isValidDate('31','04','2021')); // invalid: april has only 30 days
console.log(isValidDate('30','2021')); // valid