76 lines
1.6 KiB
Python
76 lines
1.6 KiB
Python
|
|
"""Data module utility functions.
|
|||
|
|
|
|||
|
|
集中管理数据模块中常用的工具函数,避免重复定义。
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from datetime import datetime, timedelta
|
|||
|
|
from typing import Optional
|
|||
|
|
|
|||
|
|
|
|||
|
|
# 默认全量同步开始日期
|
|||
|
|
DEFAULT_START_DATE = "20180101"
|
|||
|
|
|
|||
|
|
# 今日日期 (YYYYMMDD 格式)
|
|||
|
|
TODAY: str = datetime.now().strftime("%Y%m%d")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_today_date() -> str:
|
|||
|
|
"""获取今日日期(YYYYMMDD 格式)。
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
今日日期字符串,格式为 YYYYMMDD
|
|||
|
|
"""
|
|||
|
|
return TODAY
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_next_date(date_str: str) -> str:
|
|||
|
|
"""获取给定日期的下一天。
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
date_str: YYYYMMDD 格式的日期
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
YYYYMMDD 格式的下一天日期
|
|||
|
|
"""
|
|||
|
|
dt = datetime.strptime(date_str, "%Y%m%d")
|
|||
|
|
next_dt = dt + timedelta(days=1)
|
|||
|
|
return next_dt.strftime("%Y%m%d")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_prev_date(date_str: str) -> str:
|
|||
|
|
"""获取给定日期的前一天。
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
date_str: YYYYMMDD 格式的日期
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
YYYYMMDD 格式的前一天日期
|
|||
|
|
"""
|
|||
|
|
dt = datetime.strptime(date_str, "%Y%m%d")
|
|||
|
|
prev_dt = dt - timedelta(days=1)
|
|||
|
|
return prev_dt.strftime("%Y%m%d")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def parse_date(date_str: str) -> datetime:
|
|||
|
|
"""解析 YYYYMMDD 格式的日期字符串。
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
date_str: YYYYMMDD 格式的日期
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
datetime 对象
|
|||
|
|
"""
|
|||
|
|
return datetime.strptime(date_str, "%Y%m%d")
|
|||
|
|
|
|||
|
|
|
|||
|
|
def format_date(dt: datetime) -> str:
|
|||
|
|
"""将 datetime 对象格式化为 YYYYMMDD 字符串。
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
dt: datetime 对象
|
|||
|
|
|
|||
|
|
Returns:
|
|||
|
|
YYYYMMDD 格式的日期字符串
|
|||
|
|
"""
|
|||
|
|
return dt.strftime("%Y%m%d")
|