Skip to content

Commit 67b070f

Browse files
Datepicker: Update parseDate to properly handle a string value in shortYearCutoff. Fixed #6872: parseDate does not default shortYearCutoff correctly.
1 parent 7608e4a commit 67b070f

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

tests/unit/datepicker/datepicker_options.js

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -796,16 +796,21 @@ test('parseDate', function() {
796796
equalsDate($.datepicker.parseDate('\'day\' d \'of\' MM (\'\'DD\'\'), yy',
797797
'day 3 of February (\'Saturday\'), 2001'), new Date(2001, 2 - 1, 3),
798798
'Parse date \'day\' d \'of\' MM (\'\'DD\'\'), yy');
799-
equalsDate($.datepicker.parseDate('ymmdd', '010203'),
800-
new Date(2001, 2 - 1, 3), 'Parse date ymmdd - default cutoff');
801-
equalsDate($.datepicker.parseDate('y-m-d', '01-02-03'),
802-
new Date(2001, 2 - 1, 3), 'Parse date y-m-d - default cutoff');
803-
equalsDate($.datepicker.parseDate('y-m-d', '51-02-03'),
804-
new Date(1951, 2 - 1, 3), 'Parse date y-m-d - default cutoff');
805-
equalsDate($.datepicker.parseDate('y-m-d', '51-02-03', {shortYearCutoff: 80}),
806-
new Date(2051, 2 - 1, 3), 'Parse date y-m-d - cutoff 80');
807-
equalsDate($.datepicker.parseDate('y-m-d', '51-02-03', {shortYearCutoff: '+60'}),
808-
new Date(2051, 2 - 1, 3), 'Parse date y-m-d - cutoff +60');
799+
var currentYear = new Date().getFullYear();
800+
equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000) + '-02-03'),
801+
new Date(currentYear, 2 - 1, 3), 'Parse date y-m-d - default cutuff');
802+
equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000 + 10) + '-02-03'),
803+
new Date(currentYear+10, 2 - 1, 3), 'Parse date y-m-d - default cutuff');
804+
equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000 + 11) + '-02-03'),
805+
new Date(currentYear-89, 2 - 1, 3), 'Parse date y-m-d - default cutuff');
806+
equalsDate($.datepicker.parseDate('y-m-d', '80-02-03', {shortYearCutoff: 80}),
807+
new Date(2080, 2 - 1, 3), 'Parse date y-m-d - cutoff 80');
808+
equalsDate($.datepicker.parseDate('y-m-d', '81-02-03', {shortYearCutoff: 80}),
809+
new Date(1981, 2 - 1, 3), 'Parse date y-m-d - cutoff 80');
810+
equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000 + 60) + '-02-03', {shortYearCutoff: '+60'}),
811+
new Date(currentYear + 60, 2 - 1, 3), 'Parse date y-m-d - cutoff +60');
812+
equalsDate($.datepicker.parseDate('y-m-d', (currentYear - 2000 + 61) + '-02-03', {shortYearCutoff: '+60'}),
813+
new Date(currentYear - 39, 2 - 1, 3), 'Parse date y-m-d - cutoff +60');
809814
var gmtDate = new Date(2001, 2 - 1, 3);
810815
gmtDate.setMinutes(gmtDate.getMinutes() - gmtDate.getTimezoneOffset());
811816
equalsDate($.datepicker.parseDate('@', '981158400000'), gmtDate, 'Parse date @');

ui/jquery.ui.datepicker.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -966,6 +966,8 @@ $.extend(Datepicker.prototype, {
966966
if (value == '')
967967
return null;
968968
var shortYearCutoff = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff;
969+
shortYearCutoff = (typeof shortYearCutoff != 'string' ? shortYearCutoff :
970+
new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10));
969971
var dayNamesShort = (settings ? settings.dayNamesShort : null) || this._defaults.dayNamesShort;
970972
var dayNames = (settings ? settings.dayNames : null) || this._defaults.dayNames;
971973
var monthNamesShort = (settings ? settings.monthNamesShort : null) || this._defaults.monthNamesShort;

0 commit comments

Comments
 (0)