当我输入'02 / 27/2010'时,它不是NaN。当我输入'02 / 31/2010'时,当我使用Date和getDate(“mydate”)函数时,它也不是NaN。它将改为3月3日?
有没有办法确定日期是否是真实日期,而不会增加跳到下个月或一年的天数?
谢谢, 马克
答案 0 :(得分:2)
这是一种方式:
String.prototype.isValidDate = function(){
var arrDate = this.split("/");
if(arrDate.length!=3)return false;
var month = parseInt(arrDate[0],10);
var day = parseInt(arrDate[1],10);
var year = parseInt(arrDate[2],10);
var dateComp = new Date(year, month-1, day);
return (month == dateComp.getMonth()+1 &&
day == dateComp.getDate() &&
year == dateComp.getFullYear());
};
alert("2/1/2011".isValidDate());
alert("2/31/2011".isValidDate());
alert("02/01/2011".isValidDate());
答案 1 :(得分:1)
您可以结帐datejs查看javascript中日期操作的所有内容。
答案 2 :(得分:0)
答案 3 :(得分:0)
//
function isvalid_mdy(s){
var day, A= s.split(/\D+/).map(function(itm,i){return parseInt(itm,10)});
A[0]-=1;
try{
day= new Date(A[2], A[0], A[1]);
if(day.getMonth()== A[0] && day.getDate()== A[1]) return day;
throw 'Bad Date ';
}
catch(er){
return NaN;
}
}
function isvalid_dmy(s){
var day, A= s.split(/\D+/).map(function(itm,i){return parseInt(itm,10)});
A[1]-=1;
try{
day= new Date(A[2], A[1], A[0]);
if(day.getMonth()== A[1] && day.getDate()== A[0]) return day;
throw 'Bad Date ';
}
catch(er){
return NaN;
}
}