协调世界时 UTC
UTC 是服务端系统最推荐的存储时间口径。它不依赖用户电脑、不依赖服务器所在城市,也不会因为夏令时显示规则变化而改变数据库里的原始时间。
官方参考:Historical Bar Data
UTC 请求格式
Section titled “UTC 请求格式”TWS API 的 UTC 时间通常写成:
yyyyMMdd-HH:mm:ss注意日期和时间之间是短横线,不是空格。例如美东夏令时 20260612 15:59:00 US/Eastern 等于 UTC:
20260612-19:59:00Python 转换示例
Section titled “Python 转换示例”from datetime import datetimefrom zoneinfo import ZoneInfo
# 先用交易所时区表达用户想看的时间exchange_time = datetime( 2026, 6, 12, 15, 59, 0, tzinfo=ZoneInfo("US/Eastern"),)
# 转成 UTC 后,按 TWS API UTC 格式输出utc_time = exchange_time.astimezone(ZoneInfo("UTC"))end_time = utc_time.strftime("%Y%m%d-%H:%M:%S")
print(end_time) # 20260612-19:59:00app.reqHistoricalData( 97031, contract, "20260612-19:59:00", # UTC 时间 "2 D", "1 hour", "TRADES", 1, 1, False, [],)同一 AAPL 请求在 formatDate=2 时返回 Unix 秒级时间戳:
FORMAT_DATE_2_ROWS=1781271000|1781272800|1781276400DONE_FLAGS=97101,97102NON_INFO_ERROR_COUNT=0收到这类数值后,程序应在入库时按 UTC 处理,在页面展示时再转换成交易所时区或用户选择的时区。
| 字段 | 建议 |
|---|---|
utc_time | 数据库主时间字段,用 UTC 保存 |
exchange_time | 可选保存,方便排查和展示 |
exchange_timezone | 保存 US/Eastern、Asia/Hong_Kong 等时区标识 |
raw_bar_date | 保存 TWS 原始返回字符串,方便复盘问题 |
UTC 适合程序存储层,不适合直接展示给普通用户。页面或报表展示时,应该再转换回交易所时区或用户选择的时区。这样既能保证数据库稳定,又能让人看到符合交易习惯的时间。