如何在chrome浏览器以及firefox浏览器中验证日期

时间:2013-09-20 13:55:01

标签: javascript google-chrome date cross-browser

在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中验证日期并保持代码不受这些差异的影响。如果需要更多详细信息,请写下评论。

2 个答案:

答案 0 :(得分:5)

正如您所发现的,Javascript Date API在浏览器之间可能会有一些混合的结果。

我建议的最佳选择是使用可用于此的第三方库之一。我可以推荐两种 - Moment.jsDate.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/dddd/mm/yyyymm/dd/yyyyyyyy/dd/mm(以及许多变体[和问题])。

但是,这非常天真,与绝大多数日期格式不匹配,允许使用混合分隔符,以及其他一系列问题。

同样,我强烈建议您实施类似moment.js的库,但此正则表达式可能是一个开始。