Datepicker: Fixed parsing of single y character for date formats. Fixes #6659 - Datepicker: Date format ymmdd not parsed correctly.

This commit is contained in:
pheiberg 2010-11-13 22:58:07 +01:00 committed by Scott González
parent 859c87e6d9
commit a2e0eb920a
2 changed files with 9 additions and 7 deletions

View File

@ -777,12 +777,12 @@ test('parseDate', function() {
new Date(2001, 12 - 1, 13), 'Parse date d m y');
equalsDate($.datepicker.parseDate('dd mm yy', '13 12 2001'),
new Date(2001, 12 - 1, 13), 'Parse date dd mm yy');
equalsDate($.datepicker.parseDate('y-o', '2001-34'),
equalsDate($.datepicker.parseDate('y-o', '01-34'),
new Date(2001, 2 - 1, 3), 'Parse date y-o');
equalsDate($.datepicker.parseDate('yy-oo', '2001-347'),
new Date(2001, 12 - 1, 13), 'Parse date yy oo');
new Date(2001, 12 - 1, 13), 'Parse date yy-oo');
equalsDate($.datepicker.parseDate('oo yy', '348 2004'),
new Date(2004, 12 - 1, 13), 'Parse date oo-yy');
new Date(2004, 12 - 1, 13), 'Parse date oo yy');
equalsDate($.datepicker.parseDate('D d M y', 'Sat 3 Feb 01'),
new Date(2001, 2 - 1, 3), 'Parse date D d M y');
equalsDate($.datepicker.parseDate('d MM DD yy', '3 February Saturday 2001'),
@ -792,6 +792,8 @@ test('parseDate', function() {
equalsDate($.datepicker.parseDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy',
'day 3 of February (\'Saturday\'), 2001'), new Date(2001, 2 - 1, 3),
'Parse date \'day\' d \'of\' MM (\'\'DD\'\'), yy');
equalsDate($.datepicker.parseDate('ymmdd', '010203'),
new Date(2001, 2 - 1, 3), 'Parse date ymmdd - default cutoff');
equalsDate($.datepicker.parseDate('y-m-d', '01-02-03'),
new Date(2001, 2 - 1, 3), 'Parse date y-m-d - default cutoff');
equalsDate($.datepicker.parseDate('y-m-d', '51-02-03'),
@ -845,8 +847,8 @@ test('parseDateErrors', function() {
'3 2 AD01 - d m y', 'Missing number at position 4');
expectError(function() { $.datepicker.parseDate('d m yy', '3 2 AD01'); },
'3 2 AD01 - dd mm yy', 'Missing number at position 4');
expectError(function() { $.datepicker.parseDate('y-o', '2001-D01'); },
'2001-D01 - y-o', 'Missing number at position 5');
expectError(function() { $.datepicker.parseDate('y-o', '01-D01'); },
'2001-D01 - y-o', 'Missing number at position 3');
expectError(function() { $.datepicker.parseDate('yy-oo', '2001-D01'); },
'2001-D01 - yy-oo', 'Missing number at position 5');
expectError(function() { $.datepicker.parseDate('D d M y', 'D7 3 Feb 01'); },

View File

@ -983,9 +983,9 @@ $.extend(Datepicker.prototype, {
};
// Extract a number from the string value
var getNumber = function(match) {
lookAhead(match);
var isDoubled = lookAhead(match);
var size = (match == '@' ? 14 : (match == '!' ? 20 :
(match == 'y' ? 4 : (match == 'o' ? 3 : 2))));
(match == 'y' && isDoubled ? 4 : (match == 'o' ? 3 : 2))));
var digits = new RegExp('^\\d{1,' + size + '}');
var num = value.substring(iValue).match(digits);
if (!num)