夏令时切换期美东时间转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
相关产品推荐
相关产品推荐

