|
|
# 得到数据前一天得到时间,避免直接减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
|