from __future__ import annotations from datetime import date, datetime, time, timedelta, timezone from zoneinfo import ZoneInfo def local_date_range_to_utc(start: date, end: date, tz: ZoneInfo) -> tuple[datetime, datetime]: local_start = datetime.combine(start, time.min, tzinfo=tz) local_end = datetime.combine(end + timedelta(days=1), time.min, tzinfo=tz) return ( local_start.astimezone(timezone.utc).replace(tzinfo=None), local_end.astimezone(timezone.utc).replace(tzinfo=None), )