feat(utils): Add util get_timedelta
get_timedelta returns None in case of invalid or imparsable inputs. This behaviour is consistent wrt other utils. The util, to_timedelta tries to convert to timedelta objects only if str object is passed. It returns the same object if not string, which is absurd...given its called `to_timedelta`.
This commit is contained in:
parent
8e96d8d522
commit
3858e95e80
1 changed files with 26 additions and 0 deletions
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# MIT License. See license.txt
|
||||
|
||||
from typing import Optional
|
||||
import frappe
|
||||
import operator
|
||||
import json
|
||||
|
|
@ -68,6 +69,31 @@ def get_datetime(datetime_str=None):
|
|||
except ValueError:
|
||||
return parser.parse(datetime_str)
|
||||
|
||||
def get_timedelta(time: str = None) -> Optional[datetime.timedelta]:
|
||||
"""Return `datetime.timedelta` object from string value of a
|
||||
valid time format. Returns None if `time` is not a valid format
|
||||
|
||||
Args:
|
||||
time (str): A valid time representation. This string is parsed
|
||||
using `dateutil.parser.parse`. Examples of valid inputs are:
|
||||
'0:0:0', '17:21:00', '2012-01-19 17:21:00'. Checkout
|
||||
https://dateutil.readthedocs.io/en/stable/parser.html#dateutil.parser.parse
|
||||
|
||||
Returns:
|
||||
datetime.timedelta: Timedelta object equivalent of the passed `time` string
|
||||
"""
|
||||
from dateutil import parser
|
||||
|
||||
time = time or "0:0:0"
|
||||
|
||||
try:
|
||||
t = parser.parse(time)
|
||||
return datetime.timedelta(
|
||||
hours=t.hour, minutes=t.minute, seconds=t.second, microseconds=t.microsecond
|
||||
)
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def to_timedelta(time_str):
|
||||
from dateutil import parser
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue