You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

夏令时切换期美东时间转UTC出错,求DolphinDB自动处理方案

问题

在跨市场分析中需要合并美股与A股数据,需将所有美国东部时间(ET)转换为UTC时间。多数场景转换正常,但夏令时切换前后时间戳会差1小时——切换前为EST(UTC-5),切换后变为EDT(UTC-4)。

以2024年夏令时切换日期(3月10日)的示例数据为例:

t = table(
    [2024.03.09T09:30:00,2024.03.09T16:00:00,
    2024.03.10T09:30:00,2024.03.10T16:00:00,
    2024.03.11T09:30:00] as et_time,
    [150, 151, 152, 153, 154] as price
)

常规方法是添加固定5小时偏移将ET转换为UTC:

select temporalAdd(et_time, 5, "h") as utc_time, price from t
// 2024-03-09 09:30 → 2024-03-09 14:30  切换前为EST,+5正确
// 2024-03-09 16:00 → 2024-03-09 21:00
// 2024-03-10 09:30 → 2024-03-10 14:30  切换后为EDT,应+4,差1小时
// 2024-03-10 16:00 → 2024-03-10 21:00  同样问题
// 2024-03-11 09:30 → 2024-03-11 14:30  同样问题

切换前结果正常,但切换日开始始终差1小时。夏令时每年切换两次:3月第二个周日调快,11月第一个周日调慢。手动维护切换日期易出错且不稳定,请问在DolphinDB中是否无需手动判断日期属于EST还是EDT,即可自动处理夏令时边界问题?

解决方案

DolphinDB提供的convertTimezone函数可自动识别时区的夏令时规则,无需手动维护切换日期,直接解决该问题。

使用方法如下:

select convertTimezone(et_time, "America/New_York", "UTC") as utc_time, price from t

执行后结果验证:

  • 2024-03-09 09:30 → 2024-03-09 14:30(EST转UTC,+5小时,正确)
  • 2024-03-09 16:00 → 2024-03-09 21:00(正确)
  • 2024-03-10 09:30 → 2024-03-10 13:30(EDT转UTC,+4小时,正确)
  • 2024-03-10 16:00 → 2024-03-10 20:00(正确)
  • 2024-03-11 09:30 → 2024-03-11 13:30(正确)

convertTimezone函数通过指定源时区(America/New_York对应美国东部时间,内置EST和EDT的自动切换规则)和目标时区(UTC),会自动根据时间戳所在时段应用对应的偏移量,完美处理夏令时边界的转换问题。

内容的提问来源于stack exchange,提问作者Lambert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 17:44:51