Tweak English extract_datetime() parsing

Ambiguous times previously used a generally unexpected rule about
when to jump 12 hours when parsing times.  Now it follows the rule:
If a time is spoken without am/pm indicator, assume the next time
that hasn't passed was intended.

For example:
  "at 7 o'clock"
Would mean 7:00am if spoken at 6:59am, but would mean 7:00pm
if spoken at 7:01am.
pull/2004/head
Steve Penrod 2019-02-20 01:56:20 -06:00
parent 040a78cb6b
commit 631875d9c2
1 changed files with 2 additions and 2 deletions

View File

@ -634,7 +634,6 @@ def extract_duration_en(text):
not consumed in the parsing. The first value will not consumed in the parsing. The first value will
be None if no duration is found. The text returned be None if no duration is found. The text returned
will have whitespace stripped from the ends. will have whitespace stripped from the ends.
""" """
if not text: if not text:
return None return None
@ -1276,7 +1275,8 @@ def extract_datetime_en(string, dateNow, default_time):
((not daySpecified) or dayOffset < 1)): ((not daySpecified) or dayOffset < 1)):
# ambiguous time, detect whether they mean this evening or # ambiguous time, detect whether they mean this evening or
# the next morning based on whether it has already passed # the next morning based on whether it has already passed
if dateNow.hour < HH: if dateNow.hour < HH or (dateNow.hour == HH and
dateNow.minute < MM):
pass # No modification needed pass # No modification needed
elif dateNow.hour < HH + 12: elif dateNow.hour < HH + 12:
HH += 12 HH += 12