gpt4 book ai didi

javascript - ISO 格式的 Chrome 中的日期无效 - 使用 : 2012-11-31 测试

转载 作者:行者123 更新时间:2023-11-30 13:26:16 26 4
gpt4 key购买 nike

Who will answer my question?

How can I validate a date using Javascript cross browser?

我使用了无效日期:2011-11-31,如下所示:

var d = new Date("2012-11-31")

在 FF 中:

d = NaN // Date is invalid

在 Chrome 中:

d.getFullYear();//2012
d.getDate();//1
d.getMonth();//11

最佳答案

在 IE7-9、chrome、opera、safari、firefox 中测试。在这里测试:http://jsfiddle.net/MRwAq/

你可以这样做:

(function(){
//This should be good enough initial filter, let the native Date decide if the number are valid
var validStringRE = /^([0-9]{4})-([0-1][0-9])-([0-3][0-9])$/;

function pad( num ) {
return num < 10 ? "0"+num : num;
}

Date.prototype.getISOFormat = function(){
return this.getFullYear() + "-" +
pad( ( this.getMonth() + 1 ) ) + "-" +
pad( this.getDate() );
};

function isValidISODate( date ) {
var matches, a;
if( !validStringRE.test( date.toString() ) ) {
return false; //Get rid of anything but "NNNN-NN-NN"
}

matches = date.match( validStringRE );

a = new Date( +matches[1], +matches[2] - 1, +matches[3], 0, 0, 0, 0 );

if( isNaN( a ) ) {
return false; //firefox, ie
}

if( a.toString().toLowerCase() === "invalid date" ) {
return false; //chrome in some cases, opera, safari
}

return a.getISOFormat() === date; //browsers that "conveniently" calculate
}

window.isValidISODate = isValidISODate;
})()

然后:

var isValid = isValidISODate("2012-11-31");
//false

var isValid = isValidISODate("2012-11-30");
//true

关于javascript - ISO 格式的 Chrome 中的日期无效 - 使用 : 2012-11-31 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8346193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com