@@ -1220,6 +1220,8 @@ $.extend( Datepicker.prototype, {
12201220 day = - 1 ,
12211221 doy = - 1 ,
12221222 literal = false ,
1223+ length = - 1 ,
1224+ isFromFullYear = false ,
12231225 date ,
12241226
12251227 // Check whether a format character is doubled
@@ -1242,7 +1244,8 @@ $.extend( Datepicker.prototype, {
12421244 if ( ! num ) {
12431245 throw "Missing number at position " + iValue ;
12441246 }
1245- iValue += num [ 0 ] . length ;
1247+ length = num [ 0 ] . length ;
1248+ iValue += length ;
12461249 return parseInt ( num [ 0 ] , 10 ) ;
12471250 } ,
12481251
@@ -1304,6 +1307,7 @@ $.extend( Datepicker.prototype, {
13041307 break ;
13051308 case "y" :
13061309 year = getNumber ( "y" ) ;
1310+ isFromFullYear = length === 4 ;
13071311 break ;
13081312 case "@" :
13091313 date = new Date ( getNumber ( "@" ) ) ;
@@ -1339,7 +1343,7 @@ $.extend( Datepicker.prototype, {
13391343
13401344 if ( year === - 1 ) {
13411345 year = new Date ( ) . getFullYear ( ) ;
1342- } else if ( year < 100 ) {
1346+ } else if ( year < 100 && ! isFromFullYear ) {
13431347 year += new Date ( ) . getFullYear ( ) - new Date ( ) . getFullYear ( ) % 100 +
13441348 ( year <= shortYearCutoff ? 0 : - 100 ) ;
13451349 }
@@ -2174,9 +2178,16 @@ $.extend( Datepicker.prototype, {
21742178 return this . formatDate ( this . _get ( inst , "dateFormat" ) , date , this . _getFormatConfig ( inst ) ) ;
21752179 } ,
21762180
2177- /** Create a date object */
2181+ /** Create a date object with the correct year for years 0 through 99 */
21782182 _createDate : function ( year , month , day ) {
2179- return new Date ( year , month , day ) ;
2183+ var dateObject = new Date ( year , month , day ) ;
2184+ if ( year >= 0 && year < 100 ) {
2185+ dateObject . setDate ( 1 ) ;
2186+ dateObject . setFullYear ( year ) ;
2187+ dateObject . setMonth ( month ) ;
2188+ dateObject . setDate ( day ) ;
2189+ }
2190+ return dateObject ;
21802191 }
21812192} ) ;
21822193
0 commit comments