Date 模块使用指南
目录
1. 基础环境
1.1 导入模块
python
from FQBase.Date import (
util_if_trade,
util_get_next_trade_date,
util_get_pre_trade_date,
util_datetime_to_Unix_timestamp,
util_timestamp_to_str,
util_str_to_datetime,
util_format_date2str,
util_date_gap,
trade_date_sse,
)1.2 时区设置
python
from FQBase.Date import QATZInfo_CN
print(QATZInfo_CN) # "Asia/Shanghai"2. 时间戳处理
2.1 datetime 转 Unix 时间戳
python
from datetime import datetime
ts = util_datetime_to_Unix_timestamp(datetime.now())
print(ts) # 1743600000.02.2 Unix 时间戳转字符串
python
time_str = util_timestamp_to_str(1743600000)
print(time_str) # "2026-04-02 12:00:00"2.3 字符串转 Unix 时间戳
python
ts = util_str_to_Unix_timestamp("2026-04-03")
print(ts) # 1743686400.0
ts = util_str_to_Unix_timestamp("2026-04-03 09:30:00")
print(ts) # 1743715800.02.4 字符串转 datetime
python
dt = util_str_to_datetime("2026-04-03")
print(dt) # 2026-04-03 00:00:00+08:002.5 时间戳转 datetime(自动识别精度)
python
dt = util_stamp2datetime(1743600000)
print(dt) # 2026-04-02 12:00:00
dt = util_stamp2datetime(1743600000000) # 毫秒级
print(dt) # 2026-04-02 12:00:002.6 打印友好格式
python
friendly = util_print_timestamp(1743600000)
print(friendly) # "26-04-02 12:00(1743600000)"3. 日期格式化
3.1 获取当前日期
python
today = util_date_today()
print(today) # 2026-04-03
today_str = util_today_str()
print(today_str) # "2026-04-03"3.2 日期字符串与整数互转
python
date_int = util_date_str2int("2026-04-03")
print(date_int) # 20260403
date_str = util_date_int2str(20260403)
print(date_str) # "2026-04-03"3.3 通用日期字符串格式化
python
date_str = util_format_date2str("20260403")
print(date_str) # "2026-04-03"
date_str = util_format_date2str(20260403)
print(date_str) # "2026-04-03"
date_str = util_format_date2str(datetime.now())
print(date_str) # "2026-04-03"3.4 datetime 转字符串
python
dt = datetime.now()
date_only = util_datetime_to_strdate(dt)
print(date_only) # "2026-04-03"
datetime_str = util_datetime_to_strdatetime(dt)
print(datetime_str) # "2026-04-03 12:00:00"3.5 验证日期格式
python
is_valid = util_date_valid("2026-04-03")
print(is_valid) # True
is_valid = util_date_valid("2026-13-45")
print(is_valid) # False4. 交易日判断
4.1 判断是否为交易日
python
is_trade = util_if_trade("2026-04-03")
print(is_trade) # True (普通交易日)
is_trade = util_if_trade("2026-04-05")
print(is_trade) # False (清明节)
is_trade = util_if_trade("2026-04-04")
print(is_trade) # False (清明节假期)4.2 批量判断
python
dates = ["2026-04-01", "2026-04-02", "2026-04-03", "2026-04-07"]
trade_dates = [d for d in dates if util_if_trade(d)]
print(trade_dates) # ["2026-04-01", "2026-04-02", "2026-04-03", "2026-04-07"]5. 获取交易日
5.1 获取下一个交易日
python
next_trade = util_get_next_trade_date("2026-04-03")
print(next_trade) # "2026-04-07"
next_trade = util_get_next_trade_date("2026-04-07", n=5)
print(next_trade) # "2026-04-14"5.2 获取前一个交易日
python
prev_trade = util_get_pre_trade_date("2026-04-03")
print(prev_trade) # "2026-04-02"
prev_trade = util_get_pre_trade_date("2026-04-07", n=3)
print(prev_trade) # "2026-04-02"5.3 获取最近的交易日
python
real_date = util_get_real_date("2026-04-04")
print(real_date) # "2026-04-03" (清明节后,向左找最近的)
real_date = util_get_real_date("2026-04-06")
print(real_date) # "2026-04-07" (清明节后,向右找最近的)5.4 获取真实日期区间
python
real_start, real_end = util_get_real_datelist("2026-04-01", "2026-04-07")
print(real_start, real_end) # "2026-04-01", "2026-04-07"
real_start, real_end = util_get_real_datelist("2026-04-04", "2026-04-06")
print(real_start, real_end) # None, None (清明节假期)5.5 获取交易日范围
python
trade_range = util_get_trade_range("2026-03-30", "2026-04-10")
print(trade_range)
# ["2026-03-31", "2026-04-01", "2026-04-02", "2026-04-03", "2026-04-07"]6. 交易时间判断
6.1 A股交易时间判断
python
from datetime import datetime
from FQBase.Config.business.constants import MARKET_TYPE
dt = datetime(2026, 4, 3, 9, 30) # 2026-04-03 09:30
is_trade_time = util_if_tradetime(dt, market=MARKET_TYPE.STOCK_CN)
print(is_trade_time) # True
dt = datetime(2026, 4, 3, 12, 30) # 午休时间
is_trade_time = util_if_tradetime(dt, market=MARKET_TYPE.STOCK_CN)
print(is_trade_time) # False
dt = datetime(2026, 4, 5, 9, 30) # 清明节
is_trade_time = util_if_tradetime(dt, market=MARKET_TYPE.STOCK_CN)
print(is_trade_time) # False6.2 期货交易时间判断
python
from FQBase.Config.business.constants import MARKET_TYPE
dt = datetime(2026, 4, 3, 21, 0) # 夜盘时间
is_trade_time = util_if_tradetime(dt, market=MARKET_TYPE.FUTURE_CN)
print(is_trade_time) # True
is_trade_time = util_if_tradetime(dt, market=MARKET_TYPE.FUTURE_CN, code="AU")
print(is_trade_time) # True (黄金期货)
is_trade_time = util_if_tradetime(dt, market=MARKET_TYPE.FUTURE_CN, code="RU")
print(is_trade_time) # True (橡胶期货)7. 日期偏移
7.1 交易日偏移
python
next_day = util_date_gap("2026-04-03", 1, ">")
print(next_day) # "2026-04-07"
next_day = util_date_gap("2026-04-03", 1, ">=")
print(next_day) # "2026-04-03" (含当前)
prev_day = util_date_gap("2026-04-03", 1, "<")
print(prev_day) # "2026-04-02"7.2 日历日偏移
python
next_day = util_date_gap("2026-04-03", 1, "+")
print(next_day) # "2026-04-04"
prev_day = util_date_gap("2026-04-03", 1, "-")
print(prev_day) # "2026-04-02"7.3 获取日历日后n天
python
next_day = util_get_next_day("2026-04-03", 5)
print(next_day) # "2026-04-08"7.4 获取日历日前n天
python
last_day = util_get_last_day("2026-04-03", 5)
print(last_day) # "2026-03-29"7.5 交易日间隔天数
python
gap = util_get_trade_gap("2026-04-01", "2026-04-10")
print(gap) # 6 (清明节假期占用,实际只有6个交易日)8. 日期区间
8.1 获取月度区间
python
monthly = util_getBetweenMonth("2026-01-01", "2026-03-31")
print(monthly)
# {
# '2026-01': ['2026-01-01', '2026-01-31'],
# '2026-02': ['2026-02-01', '2026-02-28'],
# '2026-03': ['2026-03-01', '2026-03-31']
# }8.2 获取季度区间
python
quarterly = util_getBetweenQuarter("2026-01-01", "2026-06-30")
print(quarterly)
# {
# '2026Q1': ['2026-01-01', '2026-03-31'],
# '2026Q2': ['2026-04-01', '2026-06-30']
# }9. 月度和季度
9.1 月份偏移
python
next_month = util_add_months("2026-01-15", 3)
print(next_month) # datetime.datetime(2026, 4, 15, 0, 0)
prev_month = util_add_months("2026-01-15", -2)
print(prev_month) # datetime.datetime(2025, 11, 15, 0, 0)9.2 获取下个月第一天
python
first_day = util_get_1st_of_next_month(datetime(2026, 1, 15))
print(first_day) # datetime.datetime(2026, 2, 1, 0, 0)9.3 每周固定星期列表
python
fridays = get_weekday_list(2026, weekdays=4)
print(fridays[:5]) # ["2026-01-02", "2026-01-09", "2026-01-16", ...]9.4 判断周末最后交易日
python
is_weekend_end = util_week_end_day("2026-04-03")
print(is_weekend_end) # True (如果4月3日是周五且是最后交易日)10. 高级用法
10.1 计算策略持仓时间
python
entry_date = "2026-03-25"
exit_date = "2026-04-03"
trade_days = util_get_trade_gap(entry_date, exit_date)
print(f"持仓交易日数: {trade_days}")
total_days = util_calc_time(exit_date, entry_date) / 86400
print(f"持仓日历日数: {total_days:.1f}")10.2 期货交易时间转换
python
real_dt = datetime(2026, 4, 3, 21, 30)
trade_dt = util_future_to_tradedatetime(real_dt)
print(trade_dt) # 转换后的交易时间
real_dt2 = util_future_to_realdatetime(trade_dt)
print(real_dt2) # 2026-04-03 21:30:0010.3 获取交易时间段
python
from FQBase.Config.business.constants import FREQUENCE
dt = datetime(2026, 4, 3, 9, 30)
next_period = util_get_next_period(dt, FREQUENCE.FIVE_MIN)
print(next_period) # 2026-04-03 09:35:00
next_period = util_get_next_period(dt, FREQUENCE.THIRTY_MIN)
print(next_period) # 2026-04-03 10:00:00