From 0e61700e13b008f46a08bb508ba8b7f738d1751a Mon Sep 17 00:00:00 2001 From: Steve Penrod Date: Thu, 19 Jul 2018 03:48:39 -0500 Subject: [PATCH] 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. --- mycroft/util/lang/parse_en.py | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/mycroft/util/lang/parse_en.py b/mycroft/util/lang/parse_en.py index a9a6116750..8d80200606 100644 --- a/mycroft/util/lang/parse_en.py +++ b/mycroft/util/lang/parse_en.py @@ -983,24 +983,26 @@ def extract_datetime_en(string, currentDate): temp = datetime.strptime(datestr, "%B %d %Y") extractedDate = extractedDate.replace(hour=0, minute=0, second=0) if not hasYear: - temp = temp.replace(year=extractedDate.year) + temp = temp.replace(year=extractedDate.year, + tzinfo=extractedDate.tzinfo) if extractedDate < temp: - extractedDate = extractedDate.replace(year=int(currentYear), - month=int( - temp.strftime( - "%m")), - day=int(temp.strftime( - "%d"))) + extractedDate = extractedDate.replace( + year=int(currentYear), + month=int(temp.strftime("%m")), + day=int(temp.strftime("%d")), + tzinfo=extractedDate.tzinfo) else: extractedDate = extractedDate.replace( year=int(currentYear) + 1, month=int(temp.strftime("%m")), - day=int(temp.strftime("%d"))) + day=int(temp.strftime("%d")), + tzinfo=extractedDate.tzinfo) else: extractedDate = extractedDate.replace( year=int(temp.strftime("%Y")), month=int(temp.strftime("%m")), - day=int(temp.strftime("%d"))) + day=int(temp.strftime("%d")), + tzinfo=extractedDate.tzinfo) else: # ignore the current HH:MM:SS if relative using days or greater 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) extractedDate = extractedDate.replace(hour=temp.strftime("%H"), minute=temp.strftime("%M"), - second=temp.strftime("%S")) + second=temp.strftime("%S"), + tzinfo=extractedDate.tzinfo) if yearOffset != 0: extractedDate = extractedDate + relativedelta(years=yearOffset)