【问题标题】: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')

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

【问题讨论】:

    标签: javascript node.js date-fns


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-12
        • 1970-01-01
        相关资源
        最近更新 更多