【问题标题】:How to validate if a string is a valid date in js [duplicate]如何验证字符串是否是js中的有效日期[重复]
【发布时间】:2015-06-15 13:24:10
【问题描述】:

我有用于获取不同值的字符串字段。收到的一些值是日期。现在我需要检查收到的值是否是日期?收到的日期可以再次采用不同的格式。

我尝试了Date.parse(),如果格式为dd-mm-yyyy hh:mm,它可以工作,但我收到了一些类似(26/05/2015 06:20:57 +00:00)的日期。

如何比较字符串是否为有效日期?

【问题讨论】:

  • 尝试查看 moment.js (momentjs.com/docs),它是一个非常强大的日期库。您可以尝试使用任何值创建一个日期,然后检查它是否有效
  • 这可能是重复的,但链接的重复的答案大多很差,仅依赖于 Date.parse,这对于随机格式非常不可靠。
  • 正确解析日期字符串至关重要,您可以告诉解析器它采用什么格式(或提供您知道它将正确解析的格式)。否则,您可以尝试一系列不同的格式,并在获得“有效”的格式时停止。如果年份是第一个,您可以合理地确定 y-m-d 序列,但如果年份是最后一个,不合逻辑的 m/d/y 序列的普遍存在意味着您无法可靠地判断 04/05/2010 是 5 月 4 日还是4 月 5 日。
  • @RobG 好点。我在链接的欺骗中添加了一些新信息in this answer

标签: javascript momentjs


【解决方案1】:

如果 Date.parse() 对您来说还不够 - 但它可能已经足够了 - 请参阅以下文档:

那你可以试试:

它是一个在 JavaScript 中解析、验证、操作和显示日期的库,它具有比标准 JavaScript 日期处理函数更丰富的 API。

有关更多库和教程链接,另请参阅 this answer

【讨论】:

  • 谢谢。使用 moment.js 会有所帮助。我可以解析字符串以匹配我想要的任何格式。
  • 仅使用 moment.js 来验证字符串看起来不正确。有没有可用的纯 JavaScript 解决方案?
  • Date.parse() 不应使用,因为它将接受任何带有数字的字符串作为有效日期 - 检查https://stackoverflow.com/a/7445368/1876359 上的 cmets。
  • @ocramot 是的,你是对的,另请参阅 my other answer on that 我更详细地解释它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 1970-01-01
  • 2017-12-27
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多