使用date-fns进行德语日期验证

5

我有一个包含德国日期的字符串(31.01.2019,DD.MM.YYYY)。 现在我需要使用date-fns检查该日期是否有效。

dateFns.isValid(new Date('19.11.2019'), 'DD.MM.YYYY');

这个不起作用。我总是从date-fns得到错误的反馈。 我认为date-fns需要另一种日期格式。

我该如何使用德国日期格式验证字符串?


如果你将一个字符串传递给 new Date,那么它必须是 ISO 格式,任何其他格式都会导致无效日期或不可预测的结果。而 19.11.2019 不是创建日期的有效字符串。 - t.niese
你可以在每个点 . 处拆分它,然后像这样使用 Date 构造函数:https://dev59.com/G1wX5IYBdhLWcg3w2iku#33299764 - adiga
2个回答

4
你可以使用 date-fns 库的isValidparse函数:
import { isValid, parse } from 'date-fns';

// parse the string to a Date
const date = parse('31.08.2012', 'dd.MM.yyyy', new Date());

// then check the validity of that date
isValid(date)

请查看文档以获取有关这些函数的更多详细信息:https://date-fns.org/docs/Getting-Started


你能帮忙复制一个使用date-fns的函数吗?https://stackoverflow.com/questions/67760399/how-to-replicate-a-function-using-date-fns - Asking

0

从date-fns的文档中:

如果参数是无效日期,则返回false,否则返回true。无效日期是一个时间值为NaN的日期。

由于new Date('19.11.2019')已经给出了一个Invalid Date(因为它不是ISO格式),因此你会得到false

如果你想使用德国格式,你应该你的日期格式转换成ISO格式。


谢谢。date-fns仅支持yyyy-mm-dd格式进行验证?这是正确的吗? - HansPeter
在2.x版本之前(仍处于alpha状态),“isValid”函数只接受“Date”对象作为输入,并检查该“Date”对象是否包含有效的日期信息。它不会对格式进行任何验证,只会检查是否包含有效日期。而JavaScript的“Date”对象不包含任何格式,它只包含日期的表示。并且“new Date”只接受ISO格式的日期。 - t.niese

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接