Я использую регулярное выражение для соответствия формату даты. а также вывести год, месяц, дату с даты. но я не могу получить полную стоимость года здесь. если я вхожу 2013-02-29
, чем я получаю 20
в год вместо 2013
. То, что я пытаюсь здесь: -Нужна помощь в извлечении года с даты?
$(document).ready(function(){
var dateVal = '2013-06-01';
var rxDatePattern = /^(19|20)\d\d(-)(0[1-9]|1[012])(-)(0[1-9]|[12][0-9]|3[01])$/;
var dtArray = dateVal.match(rxDatePattern);
dtYear = dtArray[1];
dtMonth = dtArray[3];
dtDay = dtArray[5];
jQuery.each(dtArray, function(index, value) {
console.log(index + ': ' + value);
});
});
Я получаю выход: -
0: 2013-06-01
1: 20
2: -
3: 06
4: -
5: 01
здесь скрипку: http://jsfiddle.net/roop1886/rYh8N/1/
Вот полный код, где я использую выше код: -
//varify date formate
jQuery.validator.addMethod(
"siteDateValidator",
function (value, element) {
var currVal = value;
if (currVal != '') {
var rxDatePattern = /^(19|20)\d\d(-)(0[1-9]|1[012])(-)(0[1-9]|[12][0-9]|3[01])$/;
var dtArray = currVal.match(rxDatePattern);
if (dtArray == null) {
return false;
}
dtYear = (dtArray[1]);
dtMonth = (dtArray[3]);
dtDay = (dtArray[5]);
if (dtMonth < 1 || dtMonth > 12) return false;
else if (dtDay < 1 || dtDay > 31) return false;
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31) return false;
else if (dtMonth == 2) {
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap)){
return false;
}
}
}
return true;
},
"Please enter a valid date, date format should be(yyyy-mm-dd) and year should be greater than equal to 1900."
);
неправильная группировка '/^((?: 19 | 20) \ d \ d) (-) (0 [1- 9] | 1 [012]) (-) (0 [1-9] | [12] [0-9] | 3 [01]) $/' – Prinzhorn
Что не так с' dateValue.split ('-') [ 0] '? – RobG