Date.js parseExact () не анализирует 4-х значные годы при передаче в виде массива - PullRequest
4 голосов
/ 20 декабря 2011

Я что-то упустил с 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"));
     });

});

1 Ответ

4 голосов
/ 20 декабря 2011

Похоже, 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/

...