用户假设输入日期并根据输入的日期代码确定该特定日期是一周中的哪一天?
代码成功识别星期几,识别每个月有31天,所以我输入2月31日,简单年份自动识别为3月3日,闰年自动识别为3月2日!如果我输入一些乱码,假设 2019-15-34 它返回为 NaN!
我为每个月设置了条件,如果月份是 1 月,最大天数不应超过 31,如果月份是 2 月,则最大天数不应超过 28,如果年份简单,依此类推。之后我设置警报以显示消息“您的数据无效!请输入有效数据!” 并设置此后继续返回最终用户这次重新输入数据的有效日期。如果日期有效(假设月份不大于 12,日期不大于 31),则假设显示消息“OK!您的数据有效!” 以及继续执行并退出 if 语句的代码!
但是很明显,即使我输入了一些没有意义的日期,比如 2019-15-15,代码也不会返回“您的数据无效!请输入有效数据!”,但无论我输入什么,它都会出现“好的!你的日期是有效的!”。
出了什么问题,为什么 if 语句不能识别日期和月份格式并且不能正确执行代码?
这是代码:
var flag = false;
while(!flag){
var anydate = prompt('Enter any date in format yyyy-mm-dd', anydate);
anydate = new Date(anydate);
var dd = anydate.getDate();
var mm = (anydate.getMonth()+1);
var yyyy = anydate.getFullYear();
if(((mm<1)||(mm>12)||((mm===1)&&(dd>31))||((mm===2)&&(dd>28))||((mm===3)&&(dd>31))|| ((mm===4)&&(dd>30))||((mm===5)&&(dd>31))||((mm===6)&&(dd>30))||((mm===7)&&(dd>31))||((mm===8)&&(dd>31))||((mm===9)&&(dd>30))||((mm===10)&&(dd>31))||((mm===11)&&(mm>30))||((mm===12)&&(dd>31)))){
alert('Your data is invalid! Enter valid date please!');
continue;
flag = false}else{
alert('OK! You can continue with process!');
break;
};
};
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";
console.log(weekday[anydate.getDay()]);
console.log(anydate.getMonth()+1);
console.log(anydate.getDate());
console.log(anydate.getFullYear());
a = anydate
anydate = mm + '-' + dd + '-' + yyyy;
console.log(anydate);