Skip to content

Commit 40805db

Browse files
Merge pull request #24 from mschmidtkorth/develop
fix: Time for relative dates
2 parents 3eb5e80 + 9089ece commit 40805db

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

main.py

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,30 @@ def getDueFromInput(query):
474474
log.debug(nextWeekday(datetime.datetime.today(), naturalLanguageWeekdays[value.split(' ')[0].lower()]))
475475
elif value.split(' ')[0].lower() in naturalLanguageRelativeDays.keys(): # Get date of today/tomorrow
476476
naturalValue = datetime.datetime.today() + datetime.timedelta(naturalLanguageRelativeDays[value.split(' ')[0].lower()])
477+
time = re.search(r'(2[0-3]|[01]?[0-9])\.[0-5]?[0-9](\.[0-5]?[0-9])?', value)
478+
479+
h = 0
480+
m = 0
481+
if (time and time.group()) or len(value.split(' ')) > 1:
482+
if time and '.' in time.group():
483+
if DEBUG > 1:
484+
log.debug('Found time: ' + str(time.group()))
485+
# e.g. @today 14.00
486+
h = int(time.group().split('.')[0])
487+
m = int(time.group().split('.')[1])
488+
elif len(value.split(' ')) > 1:
489+
if not isInteger(value.split(' ')[1]):
490+
wf3.add_item(
491+
title = 'Not a valid time.',
492+
subtitle = 'Please use 24h time format with a dot - example: 15.00',
493+
valid = False,
494+
autocomplete = query + ' ',
495+
icon = ICON_WARNING
496+
)
497+
wf3.send_feedback()
498+
exit()
499+
h = int(value.split(' ')[1])
500+
naturalValue = (datetime.datetime.today() + datetime.timedelta(naturalLanguageRelativeDays[value.split(' ')[0].lower()])).replace(hour = h, minute = m)
477501
if DEBUG > 1:
478502
log.debug('Received relative date: ' + str(naturalValue))
479503
log.debug(datetime.datetime.today() + datetime.timedelta(naturalLanguageRelativeDays[value.split(' ')[0].lower()]))
@@ -488,7 +512,7 @@ def getDueFromInput(query):
488512
if DEBUG > 1:
489513
log.debug('Found date: ' + str(date.group()))
490514
try:
491-
naturalValue = datetime.datetime.strptime(date.group() + 'T' + datetime.datetime.now().strftime("%H.%M.%S"), '%Y-%m-%dT%H.%M.%S') # Convert string 'date + current time' to dateTime.
515+
naturalValue = datetime.datetime.strptime(date.group() + 'T' + datetime.datetime.now().strftime("%H.%M.%S"), '%Y-%m-%dT%H.%M.%S') # Convert string 'date + current time' to dateTime
492516
except ValueError: # Incorrect format, e.g. 2020-01-1
493517
naturalValue = ''
494518
pass
@@ -589,6 +613,19 @@ def getPriorityFromInput(query):
589613

590614
return inputPriority
591615

616+
def isInteger(n):
617+
'''Determines if string can be considered as integer
618+
619+
----------
620+
@param str value: The value to check.
621+
'''
622+
try:
623+
int(n)
624+
except ValueError:
625+
pass
626+
return False
627+
else:
628+
return True # float(n).is_integer()
592629

593630
def main(wf):
594631
global query

0 commit comments

Comments
 (0)