@@ -20,6 +20,7 @@ class AlternativeFormatter(Formatter):
2020 '|mm?|ss?|S{1,9}' \
2121 '|x|X' \
2222 '|zz?|ZZ?' \
23+ '|LTS|LT|LL?L?L?' \
2324 ')'
2425
2526 _FORMAT_RE = re .compile (_TOKENS )
@@ -89,6 +90,15 @@ class AlternativeFormatter(Formatter):
8990 'zz' : lambda dt : '{}' .format (dt .timezone_name ),
9091 }
9192
93+ _DEFAULT_DATE_FORMATS = {
94+ 'LTS' : 'h:mm:ss A' ,
95+ 'LT' : 'h:mm A' ,
96+ 'L' : 'MM/DD/YYYY' ,
97+ 'LL' : 'MMMM D, YYYY' ,
98+ 'LLL' : 'MMMM D, YYYY h:mm A' ,
99+ 'LLLL' : 'dddd, MMMM D, YYYY h:mm A' ,
100+ }
101+
92102 def format (self , dt , fmt , locale = None ):
93103 """
94104 Formats a Pendulum instance with a given format and locale.
@@ -131,6 +141,12 @@ def _format_token(self, dt, token, locale):
131141
132142 :rtype: str
133143 """
144+ if token in self ._DEFAULT_DATE_FORMATS :
145+ fmt = dt .translator ().transchoice ('date_formats' , token , locale = locale )
146+ if fmt == 'date_formats' :
147+ fmt = self ._DEFAULT_DATE_FORMATS [token ]
148+
149+ return self .format (dt , fmt , locale )
134150 if token in self ._LOCALIZABLE_TOKENS :
135151 return self ._format_localizable_token (dt , token , locale )
136152
@@ -209,6 +225,11 @@ def _format_localizable_token(self, dt, token, locale):
209225 trans = dt .translator ().transchoice (trans_id , count , locale = locale )
210226
211227 if trans_id == 'ordinal' :
212- return '{:d}{}' .format (count , trans )
228+ trans = '{:d}{}' .format (count , trans )
229+
230+ if trans_id == trans :
231+ # Unable to find the corresponding translation
232+ # Defaulting to english
233+ return self ._format_localizable_token (dt , token , 'en' )
213234
214235 return trans
0 commit comments