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

Posted

技术标签:

【中文标题】使用 date-fns 进行德语日期验证【英文标题】:German date validation with date-fns 【发布时间】:2019-06-27 01:37:40 【问题描述】:

我有一个带有德国日期的字符串(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 不是创建日期的有效字符串。 您可以在每个点 . 处拆分它,然后像这样使用 Date 构造函数:***.com/a/33299764 【参考方案1】:

你可以使用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

【讨论】:

你能帮忙***.com/questions/67760399/…【参考方案2】:

从日期-fns documentation :

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

因为new Date('19.11.2019') 已经给出了Invalid Date(因为它不是ISO 格式),所以你得到false

如果你想使用德语格式,你应该convert你的日期格式为 ISO 格式。

【讨论】:

谢谢。 date-fns 仅支持格式 yyyy-mm-dd 进行验证?这是正确的吗? @HansPeter 在 2.x 版之前(仍然是 alpha),isValid 函数只接受 Date 对象作为输入,并检查 Date 对象是否包含有效的日期信息.它不会对格式进行任何验证,只有当它拥有一个有效的日期时。并且 javascript Date 对象不包含任何格式,它仅包含日期的表示。而new Date 只接受 ISO 格式的日期。

以上是关于使用 date-fns 进行德语日期验证的主要内容,如果未能解决你的问题,请参考以下文章

jQuery验证附加方法德语日期

如何使用 date-fns 格式化日期?

ActionScript 3 AS3 RegExp:验证出生日期(荷兰/德语表示法)

使用 Date-FNS - NaN 错误以分钟为单位获取日期之间的差异

如何使用 JavaScript date-fns 库在特定时区格式化日期/时间

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