# 得到数据前一天得到时间，避免直接减1是错的
from datetime import datetime, timedelta

import logging
import calendar

# 获取日志记录器
logger = logging.getLogger(__name__)


# 获取前一天的日期
def effective_date(year, month, day):
    try:
        logger.info("开始组装获取前一天的时间")
        # 拿到一个日期
        date_now = year + month + day
        # 转成有效时间
        date = datetime.strptime(date_now, "%Y%m%d")

        # 计算前一天
        day_before = date - timedelta(days=1)

        # 获得年月日并返回
        year = day_before.year
        month = day_before.month
        day = day_before.day

        return year, month, day

    except AttributeError:
        logger.exception(f"获取前一天时间失败：{AttributeError}")


# 获取后一天的日期
def is_valid_date(year, month, day):
    try:
        datetime(year=year, month=month, day=day)
        return True
    except ValueError:
        return False


def get_next_day(year, month, day):
    try:
        if not is_valid_date(year, month, day):
            raise ValueError("输入的日期无效")

        current_date = datetime(year=year, month=month, day=day)
        next_date = current_date + timedelta(days=1)
        return next_date.year, next_date.month, next_date.day
    except ValueError:
        logger.exception(f"获取后一天时间失败：{ValueError}")


if __name__ == "__main__":
    # 示例使用
    year, month, day = 2025, 6, 5  # 闰年2月28日
    next_year, next_month, next_day = get_next_day(year, month, day)
    print(f"后一天是: {next_year}-{next_month}-{next_day}")  # 输出: 2020-2-29
