在Chrome中,我试图检查日期是否为有效日期。
有一个变量:
var d = new Date('9/'); // Not a correct format
在Chrome中
console.log(new Date('9/')); // Output: Sat Sep 01 2001 00:00:00 GMT+0530 (India Standard Time) Which is wrong as I am providing wrong date.
在Firefox中
console.log(new Date('9/')); // Output: Invalid Date
同样使用date.toLocaleString()
在firefox中输出06 May 2007 00:00:00
并且在chrome中为1/9/2001
;
所以我的问题是如何在chrome中验证日期并保持代码不受这些差异的影响。如果需要更多详细信息,请写下评论。
答案 0 :(得分:5)
正如您所发现的,Javascript Date API在浏览器之间可能会有一些混合的结果。
我建议的最佳选择是使用可用于此的第三方库之一。我可以推荐两种 - Moment.js或Date.js。
这两个lib都有更好的验证和解析,并且比内置的Date类更加一致的跨浏览器。
答案 1 :(得分:1)
正确答案是使用@Spudley建议的Javascript库,如moment.js。
但是,如果您不想包含那个很棒的库(或其他类似的库),您可以尝试通过这样的正则表达式运行日期:
var date = "9/",
pattern = /(?:(?:\d{2}[-\/]){2}\d{4})|(?:\d{4}(?:[-\/]\d{2}){2})/,
isValid = false;
isValid = pattern.test( date );
这将匹配yyyy/mm/dd
,dd/mm/yyyy
,mm/dd/yyyy
和yyyy/dd/mm
(以及许多变体[和问题])。
同样,我强烈建议您实施类似moment.js的库,但此正则表达式可能是一个开始。