21 lines
558 B
Python
21 lines
558 B
Python
"""时间工具。"""
|
||
|
||
from datetime import UTC, datetime
|
||
|
||
|
||
def utc_now() -> datetime:
|
||
return datetime.now(UTC)
|
||
|
||
|
||
def to_iso(value: datetime | None) -> str | None:
|
||
if value is None:
|
||
return None
|
||
if value.tzinfo is None:
|
||
value = value.replace(tzinfo=UTC)
|
||
return value.astimezone(UTC).isoformat().replace("+00:00", "Z")
|
||
|
||
|
||
def as_utc(value: datetime) -> datetime:
|
||
"""SQLite 读回 naive datetime 时补 UTC;PG(timezone=True) 读回 aware 则原样返回。"""
|
||
return value if value.tzinfo else value.replace(tzinfo=UTC)
|