22 lines
671 B
Python
22 lines
671 B
Python
from __future__ import annotations
|
|
|
|
from datetime import UTC, datetime, timedelta, timezone
|
|
from zoneinfo import ZoneInfo, ZoneInfoNotFoundError
|
|
|
|
|
|
def resolve_timezone(timezone_name: str):
|
|
try:
|
|
return ZoneInfo(timezone_name)
|
|
except ZoneInfoNotFoundError:
|
|
fallback_mapping = {
|
|
"Asia/Shanghai": timezone(timedelta(hours=8)),
|
|
"Asia/Hong_Kong": timezone(timedelta(hours=8)),
|
|
"UTC": UTC,
|
|
}
|
|
return fallback_mapping.get(timezone_name, UTC)
|
|
|
|
|
|
def format_now(timezone_name: str) -> str:
|
|
current = datetime.now(resolve_timezone(timezone_name))
|
|
return current.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]
|