Strasmore Research
学习 Matt Connor作者: Matt Connor · data as of September 27, 2026 · refreshed weekly

美股盘前和盘后对应北京时间几点?夏令时与冬令时

美股盘前交易对应北京时间16:00到21:30(夏令时)或17:00到22:30(冬令时),盘后做到次日08:00或09:00。附两个时段的北京时间对照、夏令时切换日,以及限价单和价差的差别。

美股盘前和盘后对应北京时间几点,先给结论:夏令时期间盘前是北京时间 16:00 到 21:30,盘后是次日 04:00 到 08:00;冬令时期间两头各推迟一小时,盘前 17:00 到 22:30,盘后次日 05:00 到 09:00。对住在国内的人来说,美股一天里最不用熬夜的两段恰好就是它们,盘前落在下班前后,盘后落在第二天出门前。方便是真的,代价在报价和成交方式上,后半篇会用数据把这笔成本摆出来,规则全貌可以对照盘前与盘后交易的完整规则。

美股盘前、盘中、盘后对应北京时间几点

在多数券商那里,美股一个完整交易日分三段:盘前 04:00 到 09:30(美东时间,下文缩写为 ET),盘中 09:30 到 16:00,盘后 16:00 到 20:00。下面这张表把三段直接换算成北京时间,夏令时和冬令时各一列。换算由时区函数完成,不是手算,所以不会出现那种把 12 小时和 13 小时记混的错误。

查询美股三个时段对应的北京时间(夏令时 / 冬令时)
labelet_windowbeijing_summerbeijing_winterbeijing_calendar_dayhours
盘前 Pre-Market04:00 - 09:30 ET16:00 - 21:3017:00 - 22:30与美东同一天5.5
盘中 Regular09:30 - 16:00 ET21:30 - 04:0022:30 - 05:00当晚开始,次日凌晨结束6.5
盘后 After-Hours16:00 - 20:00 ET04:00 - 08:0005:00 - 09:00整段在次日清晨4
每个数字背后的完整 SQL
SELECT
    s.1 AS label,
    s.2 AS et_window,
    concat(
        formatDateTime(toTimeZone(toDateTime(concat('2026-07-15 ', s.3), 'America/New_York'), 'Asia/Shanghai'), '%H:%i'),
        ' - ',
        formatDateTime(toTimeZone(toDateTime(concat('2026-07-15 ', s.4), 'America/New_York'), 'Asia/Shanghai'), '%H:%i')
    ) AS beijing_summer,
    concat(
        formatDateTime(toTimeZone(toDateTime(concat('2026-12-15 ', s.3), 'America/New_York'), 'Asia/Shanghai'), '%H:%i'),
        ' - ',
        formatDateTime(toTimeZone(toDateTime(concat('2026-12-15 ', s.4), 'America/New_York'), 'Asia/Shanghai'), '%H:%i')
    ) AS beijing_winter,
    s.5 AS beijing_calendar_day,
    s.6 AS hours
FROM
(
    SELECT arrayJoin([
        ('盘前 Pre-Market',  '04:00 - 09:30 ET', '04:00:00', '09:30:00', '与美东同一天', 5.5),
        ('盘中 Regular',     '09:30 - 16:00 ET', '09:30:00', '16:00:00', '当晚开始,次日凌晨结束', 6.5),
        ('盘后 After-Hours', '16:00 - 20:00 ET', '16:00:00', '20:00:00', '整段在次日清晨', 4.0)
    ]) AS s
)
ORDER BY et_window
自己运行这个查询

盘前这一段长 5.5 小时,夏令时对应北京时间 16:00 - 21:30,冬令时 17:00 - 22:30。盘后长 4 小时,夏令时 04:00 - 08:00,冬令时 05:00 - 09:00。夹在中间的盘中 6.5 小时,是三段里唯一需要熬夜的一段。三段相加 16 小时,其中十个小时落在国内人清醒且方便的时候。

一个美股交易日,占北京时间的两个日期

隔夜这件事把很多人绕晕,其实一句话就能settle:一个美东交易日在北京时间里跨两个日期。以美东周一为例,盘前 16:00 到 21:30 落在北京时间周一傍晚,盘中从周一 21:30 跨过零点到周二 04:00,盘后 04:00 到 08:00 整段在周二早上。所以美东周一这一个交易日,在北京时间里是从周一下班到周二上班前的一段连续时间。

日期归属只看美东。委托记录、成交回报和结算日都按美东交易日计,北京时间周二清晨成交的那一笔,在对账单上属于美东周一。周末的边界同理:美东周五的盘后落在北京时间周六早上 04:00 到 08:00(夏令时),那是一周里最后一次能下单的窗口,再往后要等下周一北京时间 16:00 的盘前。表里 beijing_calendar_day 一列写的就是每段归哪一天。

一年两次差一小时:三月第二个周日和十一月第一个周日

国内不实行夏令时,所以变的永远是美国那一头,这也是最容易让人错过开盘的一件事。美国的夏令时从三月第二个周日凌晨 2 点(美东当地)开始,到十一月第一个周日凌晨 2 点结束。两次切换都发生在周日,第一个受影响的美股交易日是紧接着的周一。下面这张表按这条规则算出接下来几次切换,以及切换之后各时段在北京时间的新时刻。

查询接下来的美国夏令时切换日,以及切换后的北京时间
switch_dateswitch_labelclock_changebeijing_premarket_openbeijing_regular_openbeijing_afterhours_enddays_away
2026-11-012026年11月1日美东回到冬令时 EST17:0022:3009:0035
2027-03-142027年3月14日美东进入夏令时 EDT16:0021:3008:00168
2027-11-072027年11月7日美东回到冬令时 EST17:0022:3009:00406
2028-03-122028年3月12日美东进入夏令时 EDT16:0021:3008:00532
2028-11-052028年11月5日美东回到冬令时 EST17:0022:3009:00770
每个数字背后的完整 SQL
SELECT
    toString(d)                                                  AS switch_date,
    concat(toString(toYear(d)), '年', toString(toMonth(d)), '月',
           toString(toDayOfMonth(d)), '日')                      AS switch_label,
    if(toMonth(d) = 3, '美东进入夏令时 EDT', '美东回到冬令时 EST') AS clock_change,
    if(toMonth(d) = 3, '16:00', '17:00')                         AS beijing_premarket_open,
    if(toMonth(d) = 3, '21:30', '22:30')                         AS beijing_regular_open,
    if(toMonth(d) = 3, '08:00', '09:00')                         AS beijing_afterhours_end,
    dateDiff('day', today(), d)                                  AS days_away
FROM
(
    SELECT arrayJoin([
        toDate(concat(toString(y), '-03-01'))
            + ((7 - toDayOfWeek(toDate(concat(toString(y), '-03-01')))) % 7) + 7,
        toDate(concat(toString(y), '-11-01'))
            + ((7 - toDayOfWeek(toDate(concat(toString(y), '-11-01')))) % 7)
    ]) AS d
    FROM (SELECT arrayJoin([2026, 2027, 2028]) AS y)
)
WHERE d >= today()
ORDER BY d
LIMIT 5
自己运行这个查询

最近的一次切换是 2026年11月1日,距今 35 天,内容是 美东回到冬令时 EST。从那之后的第一个交易日起,盘前从北京时间 17:00 开始,盘中 22:30 开盘,盘后收在次日 09:00。券商 App 里显示的时间通常会自己跟着调,人这边容易出错的是两处:设了固定闹钟的那一周,以及挂在盘前盘后的长期有效委托,它们的有效时段跟着美东走。

提前收盘日:美股在北京时间凌晨一点就收了

美国一年有十来个全天休市日,另外有几个半日市,盘中提前到 13:00 ET 收盘。半日市对国内的人影响更直接:盘中在北京时间凌晨 01:00(夏令时)或 02:00(冬令时)就结束了,熬到平常的收盘时间只会看到一条不动的价格。下面这张表是交易所日历上接下来的休市与提前收盘日,day_status 一列标出是全天休市还是提前收盘,提前收盘的行同时给出美东和北京时间的收盘时刻。

查询接下来的美股休市与提前收盘日(含北京时间收盘时刻)
holiday_dateweekdayholidayday_statuset_closebeijing_closedays_away
2026-11-26ThuThanksgivingclosed60
2026-11-27FriThanksgivingearly-close13:0011-28 02:0061
2026-12-24ThuChristmasearly-close13:0012-25 02:0088
2026-12-25FriChristmasclosed89
2027-01-01FriNew Years Dayclosed96
2027-01-18MonMartin Luther King, Jr. Dayclosed113
2027-02-15MonWashington's Birthdayclosed141
2027-03-26FriGood Fridayclosed180
2027-05-31MonMemorial Dayclosed246
2027-06-18FriJuneteenthclosed264
2027-07-05MonIndependence Dayclosed281
2027-09-06MonLabor Dayclosed344
每个数字背后的完整 SQL
SELECT
    toString(date)                          AS holiday_date,
    formatDateTime(date, '%a')              AS weekday,
    any(name)                               AS holiday,
    any(status)                             AS day_status,
    any(if(status = 'early-close',
           formatDateTime(toTimeZone(close, 'America/New_York'), '%H:%i'),
           ''))                             AS et_close,
    any(if(status = 'early-close',
           formatDateTime(toTimeZone(close, 'Asia/Shanghai'), '%m-%d %H:%i'),
           ''))                             AS beijing_close,
    dateDiff('day', today(), date)          AS days_away
FROM global_markets.stocks_market_holidays
WHERE date >= today()
GROUP BY date
ORDER BY date
自己运行这个查询

日历上接下来一共有 12 个休市或提前收盘的日期,最近的一个是 2026-11-26(Thanksgiving),距今 60 天,当天的状态是 closed。提前收盘日的盘后时段也随之提前开始,结束时刻各家券商不完全一样。假日和周末前后的完整安排见节假日和周末的盘后交易。

盘前盘后和盘中,差别在哪里

下单类型。大多数服务国内投资者的美股券商在盘前盘后只接受限价单,不接受市价单。机制上的道理是:延长时段的成交靠限价单之间互相匹配,没有集中竞价兜住价格,一张市价单在报价稀薄的委托簿上可能成交在离你预期很远的位置。限价单的另一面是可能整段时间都不成交,或者只成交一部分,未成交的部分通常在该时段结束时失效,是否延续到下一段由委托本身的设置决定。

买卖价差。价差是同一时刻卖一价和买一价之间的距离,它是下单那一刻就要付出的成本。下面这张图取 KO(可口可乐)在 2026 年 6 月 10 日 04:00 到 20:00 的逐笔报价,按美东整点算平均价差,单位是基点,1 个基点等于价格的万分之一。日期写死在 SQL 里,这张图不随时间变。

查询KO 平均买卖价差按美东整点(2026 年 6 月 10 日)
et_houravg_spread_bpsquote_count
04:0019150
05:0019.74219
06:0023.95195
07:0014.29237
08:0014.82835
09:002.43100405
10:001.48151094
11:001.42115311
12:001.4359105
13:001.455371
14:001.3546091
15:001.2766892
16:0038.89260
17:0038.66196
18:0011.43171
19:009.18278
每个数字背后的完整 SQL
SELECT
    concat(leftPad(toString(et_h), 2, '0'), ':00') AS et_hour,
    round(avg(
        (toFloat64(ask_price) - toFloat64(bid_price))
        / ((toFloat64(ask_price) + toFloat64(bid_price)) / 2) * 10000
    ), 2)                                          AS avg_spread_bps,
    count()                                        AS quote_count
FROM
(
    SELECT
        toHour(toTimeZone(sip_timestamp, 'America/New_York')) AS et_h,
        ask_price,
        bid_price
    FROM global_markets.cache_stocks_quotes
    WHERE ticker = 'KO'
      AND sip_timestamp >= toDateTime('2026-06-10 04:00:00', 'America/New_York')
      AND sip_timestamp <  toDateTime('2026-06-10 20:00:00', 'America/New_York')
      AND bid_price > 0
      AND ask_price > bid_price
)
GROUP BY et_h
HAVING count() >= 20
ORDER BY et_h
自己运行这个查询

那天最早有报价的整点是 04:00,平均价差 19 个基点,这一小时的报价更新 150 次。最后一个整点 19:00 的平均价差是 9.18 个基点。看曲线的形状:两端高,09:30 到 16:00 那几个整点明显塌下去。价差走宽的同时报价更新次数也少得多,买进再卖出的一个来回,成本就落在这个差上。

成交量。报价稀薄这件事,用成交量看更直观。下面这张表把最近约六周 SPY(标普 500 ETF)的分钟成交量按三个时段归并,算出各自占 04:00 到 20:00 全部成交的比例。

查询SPY 成交量在盘前、盘中、盘后的分布(最近约六周)
labelvolume_share_pctavg_volume_millions
盘前 04:00-09:302.520.99
盘中 09:30-16:0083.6532.84
盘后 16:00-20:0013.835.43
每个数字背后的完整 SQL
SELECT
    multiIf(et_minute < 570, '盘前 04:00-09:30',
            et_minute < 960, '盘中 09:30-16:00',
                            '盘后 16:00-20:00')                  AS label,
    round(100 * sum(volume) / sum(sum(volume)) OVER (), 2)        AS volume_share_pct,
    round(sum(volume) / countDistinct(sess) / 1e6, 2)             AS avg_volume_millions
FROM
(
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York'))      AS sess,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + toMinute(toTimeZone(window_start, 'America/New_York')) AS et_minute,
        volume
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= today() - 45
      AND window_start <  today() - 2
)
WHERE et_minute >= 240 AND et_minute < 1200
GROUP BY label
ORDER BY min(et_minute)
自己运行这个查询

盘前占 2.52%,平均每个交易日 0.99 百万股;盘中占 83.65%,平均 32.84 百万股;盘后占 13.83%。换句话说,国内人最方便的那十个小时,装着一天里很小的一块成交量。这就是把方便换成流动性的那笔交易。

收盘价。盘后的成交不进入 16:00 ET 的收盘竞价,官方收盘价来自那一刻竞价的结果。盘后 18:00 ET 打出的一笔高价,在行情软件上单独显示,不会改写当天的收盘价,指数和基金净值用的也是竞价那个价格。

消息时点。财报和重大公告大量落在 16:00 ET 之后或 09:30 ET 之前,这是延长时段有人交易的主要时间点。涉及分红的时点安排另有讲究,见除息日的盘前挂单与开盘委托。

再往后:一周五天近乎全天

盘前盘后之后还有一步,把周一到周五拉到接近全天的交易。时间线、涉及哪些券商、以及和现在这套盘前盘后怎么衔接,都写在2026 年 12 月起的美股 23/5 交易;更宽的背景,比如“24 小时”这个说法到底指什么,在美股能不能 24 小时交易里。上面这张北京时间对照表在那之前一直有效。

FAQ

美股盘前交易北京时间几点开始?

夏令时期间是北京时间 16:00(美东 04:00),冬令时期间 17:00。盘前一直持续到北京时间 21:30 或 22:30,之后接上盘中。

美股盘后交易北京时间几点结束?

夏令时是次日 08:00,冬令时是次日 09:00,对应美东 20:00。美东周五的盘后落在北京时间周六早上,那是一周的最后一个下单窗口。

美股一个交易日算北京时间的哪一天?

跨两天。盘前在北京时间的当天下午和晚上,盘中跨零点,盘后在次日清晨。委托和结算的日期一律按美东交易日算,所以北京时间清晨成交的那一笔属于前一个美东日期。

夏令时切换的那一周要注意什么?

切换在周日凌晨完成,第一个受影响的交易日是紧接着的周一,所有时段在北京时间整体挪一小时。国内不实行夏令时,变的是美股那一头,上面的切换日表给出了接下来几次的具体日期。

盘前盘后可以下市价单吗?

大多数券商在这两个时段只接受限价单。限价单可能不成交或只成交一部分,未成交的部分一般在时段结束时失效。

盘后成交的价格会变成当天的收盘价吗?

不会。官方收盘价来自 16:00 ET 的收盘竞价,盘后的成交在行情里单独显示,不改写收盘价。

数据说明
  • 时段对照表的北京时间由时区函数换算,夏令时一列以 2026 年 7 月 15 日为样本日,冬令时一列以 2026 年 12 月 15 日为样本日。
  • 夏令时切换日由“三月第二个周日、十一月第一个周日”这条规则算出,日期不是写死的,所以往后几年都成立。
  • 价差面板固定在 2026 年 6 月 10 日,覆盖 16 个有足够报价的整点,剔除了买价为零和买卖价交叉的记录。
  • 成交量面板取最近约六周的分钟数据,截到前两天,最前沿还有一到两天的入库延迟。

每个面板下面都可以展开它背后的 SQL。把日期换成你自己关心的那一天,或者把 KO 换成你自己持有的股票,在 Strasmore 终端上用一句话就能重跑一遍。

#美股盘前#美股盘后#北京时间#交易时段#夏令时