Fix #2737 (Metadata retrieval error: "year out of range")

This commit is contained in:
Kovid Goyal 2009-07-07 13:46:23 -06:00
parent 3850f64c06
commit a625a9f6ea

View File

@ -308,14 +308,25 @@ def walk(dir):
yield os.path.join(record[0], f) yield os.path.join(record[0], f)
def strftime(fmt, t=None): def strftime(fmt, t=None):
''' A version of strtime that returns unicode strings. ''' ''' A version of strtime that returns unicode strings and tries to handle dates
before 1900 '''
if t is None: if t is None:
t = time.localtime() t = time.localtime()
early_year = t[0] < 1900
if early_year:
fmt = fmt.replace('%Y', '_early year hack##')
t = list(t)
orig_year = t[0]
t[0] = 1900
ans = None
if iswindows: if iswindows:
if isinstance(fmt, unicode): if isinstance(fmt, unicode):
fmt = fmt.encode('mbcs') fmt = fmt.encode('mbcs')
return plugins['winutil'][0].strftime(fmt, t) ans = plugins['winutil'][0].strftime(fmt, t)
return time.strftime(fmt, t).decode(preferred_encoding, 'replace') ans = time.strftime(fmt, t).decode(preferred_encoding, 'replace')
if early_year:
ans = ans.replace('_early year hack##', str(orig_year))
return ans
def my_unichr(num): def my_unichr(num):
try: try: