2021/04/31 などの存在しない日付の場合も false を返します。
/**
* 渡された文字列の「1.日付が正しいか?」「2.実際に存在する日付かどうか」をチェックする
*
* @param string date_str (例:2021/01/15)(例:2021-01-15)
*/
function is_date_valid( date_str )
{
const date_obj = new Date(date_str);
// 日付が Invalid Date の場合は false
if ( dateFns.isValid(new Date(date_str)) === false ){
alert(`日付 ${date_str} が正しくありません`);
return false;
}
if ( date_str.match(/[0-9]{4}\/[0-9]{2}\/[0-9]{2}/) ){
var ar = date_str.split('/');
}
else if ( date_str.match(/[0-9]{4}\-[0-9]{2}\-[0-9]{2}/) ){
var ar = date_str.split('-');
}
var year = ar[0];
var month = ar[1];
var day = ar[2];
var check_month = date_obj.getMonth() + 1;
console.log( '● year/month/day ● check_month' );
console.log( `${year}/${month}/${day} : ${check_month}` );
if ( parseInt(month) !== parseInt(check_month) ){
alert(`日付 ${date_str} は存在しません`);
return false;
}
return true;
}