From 1be2ba729e693f9dbaaf9621ddfae8a11d02f4b2 Mon Sep 17 00:00:00 2001 From: Forge Date: Thu, 19 Mar 2026 01:17:45 +0800 Subject: [PATCH] fix: timezone-aware datetime for elapsed timer in screen API --- backend/app/api/screen.py | 12 ++++++++---- backend/start.sh | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/backend/app/api/screen.py b/backend/app/api/screen.py index b24633d..0c6c506 100644 --- a/backend/app/api/screen.py +++ b/backend/app/api/screen.py @@ -8,7 +8,7 @@ from app.models.match import Match, MatchPlayer, MatchStatus from app.models.player import Player from app.models.tournament import Tournament, TournamentStatus from app.services.tournament import get_bracket_data -from datetime import datetime +from datetime import datetime, timezone router = APIRouter(prefix="/screen", tags=["screen"]) @@ -47,7 +47,11 @@ def get_court_display(court_id: int, db: Session = Depends(get_db)): elapsed = None if active_match.started_at: - elapsed = int((datetime.utcnow() - active_match.started_at).total_seconds()) + now = datetime.now(timezone.utc) + started = active_match.started_at + if started.tzinfo is None: + started = started.replace(tzinfo=timezone.utc) + elapsed = int((now - started).total_seconds()) match_data = { "id": active_match.id, @@ -89,7 +93,7 @@ def get_court_display(court_id: int, db: Session = Depends(get_db)): }, "active_match": match_data, "recent_matches": recent, - "timestamp": datetime.utcnow().isoformat(), + "timestamp": datetime.now(timezone.utc).isoformat(), } @@ -152,5 +156,5 @@ def get_overview(db: Session = Depends(get_db)): } for i, p in enumerate(top_players) ], - "timestamp": datetime.utcnow().isoformat(), + "timestamp": datetime.now(timezone.utc).isoformat(), } diff --git a/backend/start.sh b/backend/start.sh index b24ed71..39022cb 100644 --- a/backend/start.sh +++ b/backend/start.sh @@ -15,7 +15,7 @@ except Exception as e: done echo "Running seed..." -cd /app && python seed.py 2>&1 && echo "Seed complete" || echo "Seed failed or already ran (continuing)" +cd /app && python seed.py && echo "Seed complete" || echo "Seed failed (continuing)" echo "Starting server..." exec uvicorn app.main:app --host 0.0.0.0 --port 8000