在JavaScript中检查日期是否有效

88
1个回答

208

试试这个:

var date = new Date();
console.log(date instanceof Date && !isNaN(date.valueOf()));

这应该返回true

更新:增加了isNaN检查以处理由Julian H. Lam评论的情况。


32
new Date('derp') instanceof Date // true - Julian H. Lam
3
@JulianH.Lam 我已经在valueOf属性中添加了isNaN验证,以处理这种情况。谢谢!!! - Gabriel Jürgens
2
对于 new Date('06/31/2016'),返回 true,因为 Javascript 将其转换为 7/1/2016。然而,对于 06/32/2016,则返回 false。这只是需要记住的一点。唯一的缺点。 - Brian Edwards
3
@JulianH.Lam - 但是"不要将我转换为日期1"也返回true。 - schmoopy
3
我其实已经扩展了我的示例。即使使用MomentJS的isValid()函数也是错误的。似乎JavaScript使用Date.parse函数 - 当它无法评估文本时,它只使用数字,因此new Date('Test 1')的求值结果与new Date('1')相同。唯一正确工作的方法是开发自己的字符串解析,或者您可以使用https://date-fns.org/ - isValid()函数似乎可以正常工作。 - roland
显示剩余4条评论

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