"""
东八区时间工具模块
提供获取东八区时间的函数，确保所有时间操作都使用正确的时区
"""

from datetime import datetime, timezone, timedelta
import pytz

def get_east_asia_time():
    """
    获取东八区（Asia/Shanghai）的当前时间
    
    Returns:
        datetime: 东八区当前时间
    """
    # 使用 pytz 获取东八区时区
    east_asia_tz = pytz.timezone('Asia/Shanghai')
    return datetime.now(east_asia_tz)

def get_east_asia_time_naive():
    """
    获取东八区当前时间（无时区信息，用于数据库存储）
    
    Returns:
        datetime: 东八区当前时间（无时区信息）
    """
    east_asia_tz = pytz.timezone('Asia/Shanghai')
    utc_now = datetime.now(timezone.utc)
    east_asia_now = utc_now.astimezone(east_asia_tz)
    return east_asia_now.replace(tzinfo=None)

def get_east_asia_time_str(format_str='%Y-%m-%d %H:%M:%S'):
    """
    获取东八区当前时间的字符串表示
    
    Args:
        format_str (str): 时间格式字符串，默认为 '%Y-%m-%d %H:%M:%S'
    
    Returns:
        str: 格式化的东八区时间字符串
    """
    return get_east_asia_time_naive().strftime(format_str)

def get_east_asia_date_str():
    """
    获取东八区当前日期字符串
    
    Returns:
        str: 格式为 'YYYY-MM-DD' 的日期字符串
    """
    return get_east_asia_time_naive().strftime('%Y-%m-%d')

def get_east_asia_timestamp():
    """
    获取东八区当前时间戳字符串
    
    Returns:
        str: 格式为 'YYYYMMDD_HHMMSS' 的时间戳字符串
    """
    return get_east_asia_time_naive().strftime('%Y%m%d_%H%M%S')

def get_east_asia_isoformat():
    """
    获取东八区当前时间的ISO格式字符串
    
    Returns:
        str: ISO格式的时间字符串
    """
    return get_east_asia_time_naive().isoformat()

# 为了向后兼容，提供别名
east_asia_now = get_east_asia_time_naive
east_asia_now_str = get_east_asia_time_str
east_asia_date = get_east_asia_date_str
east_asia_timestamp = get_east_asia_timestamp
east_asia_iso = get_east_asia_isoformat 