From d2ba65527e5cc21bde92e44052c5bcefd4a450be Mon Sep 17 00:00:00 2001 From: Fuwn Date: Sat, 5 Jul 2025 21:26:56 -0700 Subject: fix(schedule): Handle cross-day relative time differences --- src/oguri/schedule.py | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/oguri/schedule.py b/src/oguri/schedule.py index cbd0d2a..07507a8 100644 --- a/src/oguri/schedule.py +++ b/src/oguri/schedule.py @@ -121,27 +121,31 @@ def relative_time(date): now = datetime.now() delta = now - date - if delta.days > 365: + if delta.days >= 365: years = delta.days // 365 return f"{years} year{'s' if years > 1 else ''} ago" - elif delta.days > 30: + elif delta.days >= 30: months = delta.days // 30 return f"{months} month{'s' if months > 1 else ''} ago" - elif delta.days > 7: + elif delta.days >= 7: weeks = delta.days // 7 return f"{weeks} week{'s' if weeks > 1 else ''} ago" - elif delta.days > 1: - return f"{delta.days} day{'s' if delta.days > 1 else ''} ago" - elif delta.seconds > 3600: - hours = delta.seconds // 3600 + elif delta.days >= 1: + days = delta.days + + return f"{days} day{'s' if days > 1 else ''} ago" + elif delta.total_seconds() >= 3600: + hours = int(delta.total_seconds() // 3600) return f"{hours} hour{'s' if hours > 1 else ''} ago" - elif delta.seconds > 60: - minutes = delta.seconds // 60 + elif delta.total_seconds() >= 60: + minutes = int(delta.total_seconds() // 60) return f"{minutes} minute{'s' if minutes > 1 else ''} ago" else: - return f"{delta.seconds} second{'s' if delta.seconds > 1 else ''} ago" + seconds = int(delta.total_seconds()) + + return f"{seconds} second{'s' if seconds > 1 else ''} ago" -- cgit v1.2.3