from datetime import datetime, timedelta from typing import Optional import pytz def utcnow() -> datetime: """Get current UTC datetime.""" return datetime.now(pytz.UTC) def parse_date(date_str: str) -> datetime: """Parse date string to datetime.""" formats = ["%Y-%m-%d", "%Y-%m-%dT%H:%M:%S", "%Y-%m-%d %H:%M:%S"] for fmt in formats: try: return datetime.strptime(date_str, fmt) except ValueError: continue raise ValueError(f"Unable to parse date: {date_str}") def format_timestamp(dt: datetime, format_str: str = "%Y-%m-%dT%H:%M:%S") -> str: """Format datetime to string.""" return dt.strftime(format_str) def calculate_time_delta(start: datetime, end: datetime) -> timedelta: """Calculate time delta between two datetimes.""" return end - start def safe_divide(a: float, b: float, default: float = 0.0) -> float: """Safely divide two numbers with default fallback.""" if b == 0: return default return a / b