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

Posted

技术标签:

【中文标题】接收字符串并使用 date-fns 验证它是不是是有效日期【英文标题】:Receive a string and verify if it is a valid date with date-fns接收字符串并使用 date-fns 验证它是否是有效日期 【发布时间】:2021-05-10 01:59:28 【问题描述】:

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

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

上面的这段代码不起作用,我得到'无效日期'

【问题讨论】:

【参考方案1】:

试试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');

【讨论】:

【参考方案2】:

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

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

function isValidDate(day, month, year) 
  const parsed = parse(`$day/$month/$year`, 'P', new Date(),  locale: enGB )
  return isValid(parsed)


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

【讨论】:

以上是关于接收字符串并使用 date-fns 验证它是不是是有效日期的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:格式不是 date-fns 中的函数

date-fns - 有没有办法获取短日期格式字符串

Date-fns 格式的距离不是用正确的词

Date-fns 返回不正确的日期

在 date-fns 中获取主名月份名称

获取 date-fns 中两个日期之间的持续时间,以天:小时:分钟:秒格式