| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- # coding=utf-8
- """
- 时间工具模块 - 统一时间处理函数
- """
- from datetime import datetime
- from typing import Optional
- import pytz
- # 默认时区
- DEFAULT_TIMEZONE = "Asia/Shanghai"
- def get_configured_time(timezone: str = DEFAULT_TIMEZONE) -> datetime:
- """
- 获取配置时区的当前时间
- Args:
- timezone: 时区名称,如 'Asia/Shanghai', 'America/Los_Angeles'
- Returns:
- 带时区信息的当前时间
- """
- try:
- tz = pytz.timezone(timezone)
- except pytz.UnknownTimeZoneError:
- print(f"[警告] 未知时区 '{timezone}',使用默认时区 {DEFAULT_TIMEZONE}")
- tz = pytz.timezone(DEFAULT_TIMEZONE)
- return datetime.now(tz)
- def format_date_folder(
- date: Optional[str] = None, timezone: str = DEFAULT_TIMEZONE
- ) -> str:
- """
- 格式化日期文件夹名 (ISO 格式: YYYY-MM-DD)
- Args:
- date: 指定日期字符串,为 None 则使用当前日期
- timezone: 时区名称
- Returns:
- 格式化后的日期字符串,如 '2025-12-09'
- """
- if date:
- return date
- return get_configured_time(timezone).strftime("%Y-%m-%d")
- def format_time_filename(timezone: str = DEFAULT_TIMEZONE) -> str:
- """
- 格式化时间文件名 (格式: HH-MM,用于文件名)
- Windows 系统不支持冒号作为文件名,因此使用连字符
- Args:
- timezone: 时区名称
- Returns:
- 格式化后的时间字符串,如 '15-30'
- """
- return get_configured_time(timezone).strftime("%H-%M")
- def get_current_time_display(timezone: str = DEFAULT_TIMEZONE) -> str:
- """
- 获取当前时间显示 (格式: HH:MM,用于显示)
- Args:
- timezone: 时区名称
- Returns:
- 格式化后的时间字符串,如 '15:30'
- """
- return get_configured_time(timezone).strftime("%H:%M")
- def convert_time_for_display(time_str: str) -> str:
- """
- 将 HH-MM 格式转换为 HH:MM 格式用于显示
- Args:
- time_str: 输入时间字符串,如 '15-30'
- Returns:
- 转换后的时间字符串,如 '15:30'
- """
- if time_str and "-" in time_str and len(time_str) == 5:
- return time_str.replace("-", ":")
- return time_str
|