javascript 如何检查Yup中的日期格式是否有效?

3wabscal  于 2023-02-18  发布在  Java
关注(0)|答案(1)|浏览(141)

bounty将在6天后过期。回答此问题可获得+50声望奖励。Alex T希望引起更多人关注此问题。

我使用yup来验证输入字段中的值:

const dateToCheck = yup
    .date()
    .nullable()
    .transform((curr, orig) => (orig === '' ? null : curr))
    .required()
    .min(minDate, 'Date cannot be this early')
    .max(maxDate, 'Date too much in the future')
    .test('format', 'Date is invalid', date => (date?.getFullYear() ?? 0) <= 9999)

我一直想弄清楚如何检查输入的日期是否具有正确的格式?因为yup的工作原理,01.01.20002000/01/01都将通过date验证,但我希望能够仅通过dd.MM.yyyy或仅通过yyyy/MM/dd,而不是两者,然后将有效的其他格式改为标记为无效。什么是正确的方法来做这件事在yup?

abithluo

abithluo1#

作为在格式不正确时显示错误的另一种方法,您可以将输入日期更改为所需的格式。以下示例将所有日期解析为yyyy-MM-dd

import { parse, isDate } from "date-fns";

function parseDateString(value, originalValue) {
  const parsedDate = isDate(originalValue)
    ? originalValue
    : parse(originalValue, "yyyy-MM-dd", new Date());

  return parsedDate;
}

相关问题