How to validate if a string is a valid date in js
我有字符串字段,用于获取不同的值。 收到的一些价值是日期。 现在我需要检查收到的价值是否是日期? 收到的日期可以再次采用不同的格式。
我试过Date.parse(),如果格式为dd-mm-yyyy hh:mm,它可以工作,但我收到了一些日期(26/05/2015 06:20:57 +00:00)。
如果字符串是有效日期,我如何比较?
-
试着看看moment.js(momentjs.com/docs)它是一个非常强大的日期库。 您可以尝试使用任何值创建日期,然后检查它是否有效
-
这可能是重复的,但链接的欺骗大多数都很差,只依赖于Date.parse,这对随机格式来说非常不可靠。
-
正确解析日期字符串是很基础的,您可以告诉解析器它的格式是什么(或提供一种您知道它将正确解析的格式)。 否则,您可以尝试一系列不同的格式,并在获得"工作"时停止。 如果年份是第一年,您可以合理地确定ymd序列,但是在年份最后,不合逻辑的m / d / y序列的普遍性意味着您无法可靠地判断04/05/2010是5月4日还是 4月5日。
-
@RobG好点。 我在这个链接的骗局的答案中添加了一些新的信息。
如果Date.parse()对您来说还不够 - 但可能就够了 - 请参阅以下文档:
-
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
然后你可以尝试:
它是一个用JavaScript解析,验证,操作和显示日期的库,它具有比标准JavaScript日期处理函数更丰富的API。
有关更多库和教程链接,请参阅此答案。
-
谢谢。 使用moment.js有帮助。 我可以解析字符串以匹配我想要的任何格式。
-
使用moment.js只是为了验证字符串看起来不正确。 有没有可用的纯JavaScript解决方案?
-
不应使用Date.parse(),因为它将接受任何带有数字的字符串作为有效日期 - 请查看https://stackoverflow.com/a/7445368/1876359上的注释。
-
@ocramot是的,你是对的,请参阅我的其他答案,我会更详细地解释它。