@@ -187,7 +187,7 @@ class Formatter:
187187
188188 _PARSE_TOKENS = {
189189 'YYYY' : lambda year : int (year ),
190- 'YY' : lambda year : 1900 + int (year ),
190+ 'YY' : lambda year : int (year ),
191191 'Q' : lambda quarter : int (quarter ),
192192 'MMMM' : lambda month : month ,
193193 'MMM' : lambda month : month ,
@@ -399,7 +399,7 @@ def parse(self,
399399 if not re .match (pattern , time ):
400400 raise ValueError ('String does not match format {}' .format (fmt ))
401401
402- re .sub (pattern , lambda m : self ._get_parsed_values (m , parsed , locale ), time )
402+ re .sub (pattern , lambda m : self ._get_parsed_values (m , parsed , locale , now ), time )
403403
404404 return self ._check_parsed (parsed , now )
405405
@@ -526,21 +526,24 @@ def _check_parsed(self, parsed, now
526526
527527 return validated
528528
529- def _get_parsed_values (self , m , parsed , locale
530- ): # type: (..., dict, Locale) -> None
529+ def _get_parsed_values (self , m , parsed , locale , now
530+ ): # type: (..., dict, Locale, pendulum.DateTime ) -> None
531531 for token , index in m .re .groupindex .items ():
532532 if token in self ._LOCALIZABLE_TOKENS :
533533 self ._get_parsed_locale_value (
534534 token , m .group (index ), parsed , locale
535535 )
536536 else :
537- self ._get_parsed_value (token , m .group (index ), parsed )
537+ self ._get_parsed_value (token , m .group (index ), parsed , now )
538538
539- def _get_parsed_value (self , token , value , parsed
540- ): # type: (str, str, dict) -> None
539+ def _get_parsed_value (self , token , value , parsed , now
540+ ): # type: (str, str, dict, pendulum.DateTime ) -> None
541541 parsed_token = self ._PARSE_TOKENS [token ](value )
542542
543543 if 'Y' in token :
544+ if token == 'YY' :
545+ parsed_token = now .year // 100 * 100 + parsed_token
546+
544547 parsed ['year' ] = parsed_token
545548 elif 'Q' == token :
546549 parsed ['quarter' ] = parsed_token
0 commit comments