From 578085765c6ee3fa554afc49a030d3dbb9f60736 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sat, 30 Apr 2016 09:09:32 +0530 Subject: [PATCH] Template language: Fix an error formatting dates when the underlying date does not have a day. Fixes #1576742 [BAD DATE for dates in February](https://bugs.launchpad.net/calibre/+bug/1576742) --- src/calibre/utils/date.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/calibre/utils/date.py b/src/calibre/utils/date.py index 96780540e6..444dd053ca 100644 --- a/src/calibre/utils/date.py +++ b/src/calibre/utils/date.py @@ -44,10 +44,7 @@ class SafeLocalTimeZone(tzlocal): # Here is a more stable implementation: # try: - timestamp = ((dt.toordinal() - EPOCHORDINAL) * 86400 - + dt.hour * 3600 - + dt.minute * 60 - + dt.second) + timestamp = ((dt.toordinal() - EPOCHORDINAL) * 86400 + dt.hour * 3600 + dt.minute * 60 + dt.second) return time.localtime(timestamp+time.timezone).tm_isdst except ValueError: pass @@ -122,14 +119,14 @@ def parse_date(date_string, assume_utc=False, as_utc=True, default=None): :param as_utc: If True, return a UTC datetime :param default: Missing fields are filled in from default. If None, the - current date is used. + current month and year are used. ''' from dateutil.parser import parse if not date_string: return UNDEFINED_DATE if default is None: func = datetime.utcnow if assume_utc else datetime.now - default = func().replace(hour=0, minute=0, second=0, microsecond=0, + default = func().replace(day=15, hour=0, minute=0, second=0, microsecond=0, tzinfo=_utc_tz if assume_utc else _local_tz) dt = parse(date_string, default=default, dayfirst=parse_date_day_first) if dt.tzinfo is None: