На самом деле JavaScript интерпретирует эти переменные в восьмеричных значениях, пожалуйста, преобразуйте их в десятичные, используя. Я полагаю, что вы берете строку и анализируете ее для получения значения. что-то вроде этого. Тогда, пожалуйста, сделайте следующее.
parseInt(month_val);
А вот мой фрагмент кода, который я использую для проверки действительной даты.
var birthdate = element.value.split("-");
var JDate = new Date(parseInt(birthdate[2],10), parseInt(birthdate[0],10) -1, parseInt(birthdate[1],10));
valid = (parseInt(birthdate[0],10) - 1 == JDate.getMonth() && parseInt(birthdate[1],10) == JDate.getDate() && parseInt(birthdate[2],10) == JDate.getFullYear());
return valid;