基础日期时间函数 
时间格式术语表 
常见时间格式 
- ISO 8601: 国际标准日期时间格式 
- 基本格式:
YYYY-MM-DDTHH:MM:SS.sss+HH:MM - 示例:
2023-07-30T10:15:30.000+08:00 - T: 日期和时间的分隔符
 - Z: 表示 UTC 时间(零时区),等同于 +00:00
 
 - 基本格式:
 
时区相关 
- UTC (Coordinated Universal Time): 协调世界时,全球时间标准
 - GMT (Greenwich Mean Time): 格林威治标准时间,实际使用中常与 UTC 等同
 - CST (China Standard Time): 中国标准时间,UTC+8 
- 也写作 
UTC+8或+0800 - 例:北京时间比 UTC 快 8 小时
 
 - 也写作 
 
时间戳 
- Unix 时间戳: 从 1970-01-01 00:00:00 UTC 开始的秒数 
- 秒级时间戳:10位数字(如:1627689600)
 - 毫秒级时间戳:13位数字(如:1627689600000)
 - 纳秒级时间戳:19位数字
 
 
常见时间格式化字符 
- YYYY: 四位年份(2023)
 - MM: 两位月份(01-12)
 - DD: 两位日期(01-31)
 - HH: 24小时制(00-23)
 - MM: 分钟(00-59)
 - SS: 秒钟(00-59)
 - sss: 毫秒(000-999)
 
基础日期时间函数 
python
from datetime import datetime, date, timedelta, timezone
def iso8601_to_timestamp_ms(time_format: str) -> str:
    """
    将 ISO8601 格式的时间(带时区)转换为毫秒级时间戳字符串。
    例: '2022-06-27T17:30:31.96+08:00' -> '1656322231000'
    """
    if time_format:
        ts = datetime.strptime(time_format, "%Y-%m-%dT%H:%M:%S.%f%z").timestamp()
        return str(int(ts)) + "000"
    return ""
def get_today_iso_date() -> str:
    """返回今天的日期(YYYY-MM-DD)。"""
    return str(date.today())
def get_yesterday_compact() -> str:
    """返回昨天的日期(YYYYMMDD)。"""
    return (date.today() - timedelta(days=1)).strftime("%Y%m%d")
def get_today_iso_format() -> str:
    """返回今天的日期 ISO 格式(YYYY-MM-DD)。"""
    return date.today().isoformat()时区与时间格式化 
python
def convert_to_cst(time_with_zone: str) -> str:
    """
    将带时区的时间转换为东八区(CST)时间,返回格式:'YYYY-MM-DD HH:MM:SS'
    """
    d = datetime.fromisoformat(time_with_zone) + timedelta(hours=8)
    return d.isoformat(timespec='seconds', sep=" ").split('+')[0]
def get_current_cst() -> str:
    """返回当前东八区时间,格式:'YYYY-MM-DD HH:MM:SS'"""
    return (datetime.utcnow() + timedelta(hours=8)).isoformat(sep=' ', timespec='seconds')
def get_current_cst_with_zone() -> str:
    """返回当前东八区时间,并带 '+0800' 时区信息。"""
    t = (datetime.utcnow() + timedelta(hours=8)).isoformat(sep=" ", timespec="seconds")
    return f"{t} +0800"
def timestamp_to_cst(timestamp: int) -> str:
    """
    将 Unix 时间戳(秒)转换为东八区时间。
    输出格式:'YYYY-MM-DD HH:MM:SS'
    """
    return datetime.fromtimestamp(timestamp, tz=timezone.utc) \
        .astimezone(timezone(timedelta(hours=8))) \
        .strftime(r"%Y-%m-%d %H:%M:%S")获取过去时间 
python
from datetime import datetime, timedelta, timezone
def get_time_minus_8hours() -> str:
    """
    获取当前时间的 8 小时前(约等于 CST)的时间戳,返回格式 'YYYY-MM-DD HH:MM:SS'。
    """
    cst_offset = timezone(timedelta(hours=8))
    utc_now = datetime.now(timezone.utc)
    eight_hours_ago_utc = utc_now - timedelta(minutes=60 * 8)
    eight_hours_ago_cst = eight_hours_ago_utc.astimezone(cst_offset)
    iso_format_string = eight_hours_ago_cst.isoformat(sep=" ", timespec="seconds")
    return iso_format_string.split('+')[0]
def get_time_minus_8hours() -> str:
    """
    获取当前 UTC 时间的 8 小时前,返回格式 'YYYY-MM-DD HH:MM:SS'
    """
    return (datetime.utcnow() - timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
def get_time_minus_8hours() -> str:
    """
    获取当前 UTC 时间的 8 小时前,返回格式 'YYYY-MM-DD HH:MM:SS'
    """
    return datetime.now(timezone.utc) \
        .astimezone() \
        .replace(tzinfo=None) \
        - timedelta(hours=8) \
        .strftime("%Y-%m-%d %H:%M:%S")时间字符串解析 
python
import re
from dateutil import parser
def parse_gmt_to_cst(time_format: str) -> datetime:
    """
    解析 GMT 格式时间并转换为东八区时间。
    输入: 'Jun  1 05:46:49 2022 GMT'
    """
    return datetime.strptime(time_format, '%b  %d %H:%M:%S %Y GMT') + timedelta(hours=8)
def parse_dotnet_timestamp(time_created: str) -> str:
    """
    解析形如 '/Date(1680604245507)/' 的时间戳为可读时间。
    """
    try:
        ts = int(re.search(r'\d+', time_created).group()) / 1000.0
        return datetime.fromtimestamp(ts).isoformat(sep=" ", timespec='seconds')
    except Exception:
        return ''ISO 时间字符串解析 
python
def parse_iso_nano_to_cst(time_string: str) -> str:
    """
    解析 ISO8601 带纳秒时间,自动转换为东八区时间。
    例: '2023-05-19T10:31:41.587456400Z'
    """
    try:
        parsed_dt = parser.isoparse(time_string)
        tz = timezone(timedelta(hours=8))
        return parsed_dt.astimezone(tz).strftime("%Y-%m-%d %H:%M:%S")
    except ValueError:
        return ''
def extract_iso_time_to_cst(text: str) -> str:
    """
    从文本中提取 ISO8601 时间并格式化为东八区时间。
    """
    match = re.search(r'\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{9}Z', text)
    if match:
        return parse_iso_nano_to_cst(match.group())
    return ''