Fix comparing two date strings when they may or may not have microseconds
Fix comparing two date strings when they may or may not have microseconds
I'm getting errors with this function:
def compare_dates(date1: str, date2: str) -> str:
date1_obj = datetime.strptime(date1, "%Y-%m-%dT%H:%M:%S")
date2_obj = datetime.strptime(date2, "%Y-%m-%dT%H:%M:%S")
return date1 if date1_obj > date2_obj else date2
Because the input sometimes includes microseconds. Is there a clearer way of dealing with this than what I've done?
def compare_dates(date1: str, date2: str) -> str:
date_format = "%Y-%m-%dT%H:%M:%S"
date1_obj = datetime.strptime(date1.split(".")[0], date_format)
date2_obj = datetime.strptime(date2.split(".")[0], date_format)
date1_obj = date1_obj.replace(microsecond=0)
date2_obj = date2_obj.replace(microsecond=0)
return date1 if date1_obj > date2_obj else date2
5 comments
robyoung @beehaw.org That looks like ISO8601 format so you can use fromisoformat to make the parsing a bit simpler. I'm not clear why you need to drop the microsecond part. Surely if one timestamp is a few microseconds past the second it is later.
d1 = datetime.fromisoformat(date1) d2 = datetime.fromisoformat(date2) return date1 if d1 > d2 else date2
3 0 Replyconst void* @lemmy.world
if you are reasonably confident your input dates match your format, you could just
return date1 if date1>date2 else date2
and call it a day.2 0 Replycelliern @lemmy.world Second this : this is a strong benefit of using ISO8601 format as you do : you can use alpha-numeric sort directly.
1 0 Reply