27 lines
876 B
Python
27 lines
876 B
Python
"""Utilities for date/time query operations."""
|
|
|
|
from datetime import UTC, date, datetime, time
|
|
|
|
|
|
def date_to_start_datetime(d: date) -> datetime:
|
|
"""Convert a date to datetime at start of day (00:00:00) in UTC."""
|
|
return datetime.combine(d, time.min, tzinfo=UTC)
|
|
|
|
|
|
def date_to_end_datetime(d: date) -> datetime:
|
|
"""Convert a date to datetime at end of day (23:59:59.999999) in UTC."""
|
|
return datetime.combine(d, time.max, tzinfo=UTC)
|
|
|
|
|
|
def date_range_to_datetime_range(
|
|
start_date: date, end_date: date
|
|
) -> tuple[datetime, datetime]:
|
|
"""
|
|
Convert a date range to datetime range.
|
|
|
|
Returns:
|
|
Tuple of (start_datetime, end_datetime) where:
|
|
- start_datetime is start_date at 00:00:00 UTC
|
|
- end_datetime is end_date at 23:59:59.999999 UTC
|
|
"""
|
|
return date_to_start_datetime(start_date), date_to_end_datetime(end_date)
|