Allow reference dates with tzinfo (#1695)

* Allow reference dates with tzinfo

The extract_datetime_en() function could cause an exception if the currentData parameter contained tzinfo.
pull/1696/head
Steve Penrod 2018-07-19 03:48:39 -05:00 committed by Åke
parent 9e2dc9628e
commit 0e61700e13
1 changed files with 13 additions and 10 deletions

View File

@ -983,24 +983,26 @@ def extract_datetime_en(string, currentDate):
temp = datetime.strptime(datestr, "%B %d %Y") temp = datetime.strptime(datestr, "%B %d %Y")
extractedDate = extractedDate.replace(hour=0, minute=0, second=0) extractedDate = extractedDate.replace(hour=0, minute=0, second=0)
if not hasYear: if not hasYear:
temp = temp.replace(year=extractedDate.year) temp = temp.replace(year=extractedDate.year,
tzinfo=extractedDate.tzinfo)
if extractedDate < temp: if extractedDate < temp:
extractedDate = extractedDate.replace(year=int(currentYear), extractedDate = extractedDate.replace(
month=int( year=int(currentYear),
temp.strftime( month=int(temp.strftime("%m")),
"%m")), day=int(temp.strftime("%d")),
day=int(temp.strftime( tzinfo=extractedDate.tzinfo)
"%d")))
else: else:
extractedDate = extractedDate.replace( extractedDate = extractedDate.replace(
year=int(currentYear) + 1, year=int(currentYear) + 1,
month=int(temp.strftime("%m")), month=int(temp.strftime("%m")),
day=int(temp.strftime("%d"))) day=int(temp.strftime("%d")),
tzinfo=extractedDate.tzinfo)
else: else:
extractedDate = extractedDate.replace( extractedDate = extractedDate.replace(
year=int(temp.strftime("%Y")), year=int(temp.strftime("%Y")),
month=int(temp.strftime("%m")), month=int(temp.strftime("%m")),
day=int(temp.strftime("%d"))) day=int(temp.strftime("%d")),
tzinfo=extractedDate.tzinfo)
else: else:
# ignore the current HH:MM:SS if relative using days or greater # ignore the current HH:MM:SS if relative using days or greater
if not timeStr and hrOffset == 0 and minOffset == 0 and secOffset == 0: if not timeStr and hrOffset == 0 and minOffset == 0 and secOffset == 0:
@ -1010,7 +1012,8 @@ def extract_datetime_en(string, currentDate):
temp = datetime(timeStr) temp = datetime(timeStr)
extractedDate = extractedDate.replace(hour=temp.strftime("%H"), extractedDate = extractedDate.replace(hour=temp.strftime("%H"),
minute=temp.strftime("%M"), minute=temp.strftime("%M"),
second=temp.strftime("%S")) second=temp.strftime("%S"),
tzinfo=extractedDate.tzinfo)
if yearOffset != 0: if yearOffset != 0:
extractedDate = extractedDate + relativedelta(years=yearOffset) extractedDate = extractedDate + relativedelta(years=yearOffset)