Date.js parseExact() не анализирует 4-значные годы при передаче в виде массива

Я что-то упустил с Date.parseExact() в date.js? Согласно документации API, я должен сделать это:

Date.parseExact("10/15/2004", ["M/d/yyyy", "MMMM d, yyyy"]); // The Date of 15-Oct-2004

То есть я должен иметь возможность передать массив строк, который содержит «... ожидаемый формат {String} или массив ожидаемых форматов {Array} строки даты». Однако, когда я это делаю:

var d = Date.parseExact($(this).val(), ["MMddyy", "Mddyyyy", "MM/dd/yy","MM/dd/yyyy"])

Я возвращаю нули для дат, содержащих 4 цифры года (то есть соответствующие форматам MMddyyyy и MM/dd/yyyy). Я что-то упустил или это ошибка в Date.js?

Вот полный блок кода для контекста:

$(function () {
     $('#FCSaleDate').change(function (e) {
         var d = Date.parseExact($(this).val(), ["MMddyy", "MMddyyyy", "MM/dd/yy","MM/dd/yyyy"])
         alert(d.toString("MM/dd/yyyy"));
     });

});

person seanicus    schedule 19.12.2011    source источник


Ответы (1)


Похоже, что date.js пытается проанализировать год из четырех цифр как год из двух цифр, терпит неудачу и возвращает ноль в случае ошибки.

Чтобы предотвратить это, поменяйте свои маски так, чтобы он сначала пробовал четырехзначные маски:

$(function () {
     $('#FCSaleDate').change(function (e) {
         var d = Date.parseExact($(this).val(),["MMddyyyy","MMddyy","M/d/yyyy","M/d/yy"]);
         alert(d.toString("MM/dd/yyyy"));
     });

});

http://jsfiddle.net/mblase75/ttEqh/1/

person Blazemonger    schedule 19.12.2011
comment
работает как шарм... так приятно вернуться с обеда и обнаружить, что все мои проблемы решены! Где ты был всю мою жизнь? - person seanicus; 20.12.2011
comment
Вы можете отправить это автору date.js в качестве кандидата на исправление ошибки (после двойной проверки, чтобы убедиться, что он еще не упомянул об этом в документации). Определенно странно, что код должен возвращать null после неудачной обработки четырехзначного года как двузначного, а не переходить к следующей маске. - person Blazemonger; 20.12.2011