跳到正文
AllTick
问题排查

美股行情的时间戳与交易时段怎么处理

处理美股行情时间的正确方式:统一保存 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, timezone
from zoneinfo import ZoneInfo
def 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:3016:00 - 21:3017:00 - 22:30
常规 09:30 - 16:0021:30 - 次日 04:0022: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 毫秒分别归一化。