【问题标题】:German date validation with date-fns使用 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 构造函数:stackoverflow.com/a/33299764

标签: javascript date-fns


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

【讨论】:

【解决方案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 格式的日期。
猜你喜欢
  • 2021-11-14
  • 1970-01-01
  • 2021-01-23
  • 2021-06-25
  • 2020-09-30
  • 2021-01-29
  • 2021-05-10
  • 2018-04-26
  • 2021-05-07
相关资源
最近更新 更多