问题排查
美股行情的时间戳与交易时段怎么处理
处理美股行情时间的正确方式:统一保存 UTC,按美东时区展示,正确应对夏令时切换与盘前盘后时段。
更新时间:
维护方:AllTick 官方技术团队
适用对象:在应用中处理美股数据时间的开发者
核心结论 · 30秒开发速览
美股交易时间以美国东部时间为准,并且每年有夏令时切换,所以对应的北京时间会在 21:30 与 22:30 开盘之间变化。正确做法是:接口返回的时间戳一律按 UTC 保存,展示时用 America/New_York 时区转换,不要用“北京时间减 12 或 13 小时”这类固定偏移。
01
先确认时间戳的单位
行情接口常见的时间戳是 Unix 秒(10 位)或毫秒(13 位)。AllTick 的成交时间 tick_time 为毫秒时间戳。单位弄错会导致日期偏到 1970 年或遥远的未来,这是最常见的时间问题。
pythonpython
from datetime import datetime, timezonefrom zoneinfo import ZoneInfodef parse_ts(value: str | int) -> datetime: ts = int(value) if ts > 10**12: ts = ts / 1000 return datetime.fromtimestamp(ts, tz=timezone.utc)utc = parse_ts("1760103000000")print(utc.isoformat())print(utc.astimezone(ZoneInfo("America/New_York")).isoformat())print(utc.astimezone(ZoneInfo("Asia/Shanghai")).isoformat())02
夏令时对应的北京时间
| 时段(美东时间) | 夏令时期间(北京时间) | 冬令时期间(北京时间) |
|---|---|---|
盘前 04:00 - 09:30 | 16:00 - 21:30 | 17:00 - 22:30 |
常规 09:30 - 16:00 | 21:30 - 次日 04:00 | 22:30 - 次日 05:00 |
盘后 16:00 - 20:00 | 次日 04:00 - 08:00 | 次日 05:00 - 09:00 |
03
日 K 线归属哪一天
美股常规交易时段跨越北京时间的午夜,如果按北京时间切分日期,一个交易日会被拆成两天。日 K 线的日期应按美东时间的交易日确定,存储时保留 UTC 时间,展示时再转换。
04
检查清单
- 确认时间戳是秒还是毫秒。
- 存储一律使用 UTC 或带时区的时间类型。
- 展示与交易日判断使用 America/New_York。
- 在夏令时切换前后各验证一次开盘时间。
- 区分盘前、常规与盘后数据,按需求过滤。
规范来源与验证记录 · 2026-10-13
已根据下方一手资料核对相关端点、字段与交易所规则。
Python 示例已在 Python 3.14.0 上通过 ast.parse 语法解析;此检查不验证依赖安装、运行兼容性或网络响应。
本轮未使用真实 Token 执行 AllTick 请求,也未完成生产端到端测试。复现时请记录套餐、依赖版本、交易时段、ret/trace 与实际结果。
一手规范与规则
上线前建议复现
- 用 America/New_York 检查两次夏令时切换;保存带时区 UTC,从交易所本地时间推导交易日,不使用固定时差。
- 核对假期、半日市及盘前盘后覆盖;K 线 timestamp 秒与成交 tick_time 毫秒分别归一化。