File size: 617 Bytes
82cae90 66fd359 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | """Server time. Every rule that depends on days (mastery, the days left to a test) uses this,
never the device's clock."""
from __future__ import annotations
from datetime import date, datetime, timezone
from zoneinfo import ZoneInfo
ISRAEL = ZoneInfo("Asia/Jerusalem")
def now() -> datetime:
return datetime.now(timezone.utc)
def school_day(moment: datetime | None = None) -> date:
"""The calendar day in Israel at `moment` (default: now)."""
moment = moment or now()
if moment.tzinfo is None:
raise ValueError("moment must have a timezone")
return moment.astimezone(ISRAEL).date()
|