perf: faster time parsing (#32701)
Same as previous date and datetime improvement, this uses C parser instead of python `parser`.
This commit is contained in:
parent
27b6171a05
commit
03713cfd80
1 changed files with 10 additions and 5 deletions
|
|
@ -640,12 +640,17 @@ def get_time(
|
|||
return time_str
|
||||
elif isinstance(time_str, datetime.timedelta):
|
||||
return (datetime.datetime.min + time_str).time()
|
||||
|
||||
try:
|
||||
return parser.parse(time_str).time()
|
||||
except ParserError as e:
|
||||
if "day" in e.args[1] or "hour must be in" in e.args[0]:
|
||||
return (datetime.datetime.min + parse_timedelta(time_str)).time()
|
||||
raise e
|
||||
# PERF: Our DATE_FORMAT is same as ISO format.
|
||||
return datetime.time.fromisoformat(time_str)
|
||||
except ValueError:
|
||||
try:
|
||||
return parser.parse(time_str).time()
|
||||
except ParserError as e:
|
||||
if "day" in e.args[1] or "hour must be in" in e.args[0]:
|
||||
return (datetime.datetime.min + parse_timedelta(time_str)).time()
|
||||
raise e
|
||||
|
||||
|
||||
def get_datetime_str(datetime_obj: DateTimeLikeObject) -> str:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue