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

墨西哥永久取消夏令时后,JavaScript中RRule时区偏移异常解决

问题:RRule库生成日期范围时UTC时间偏移错误(墨西哥时区)

问题现象

使用RRule库生成指定时区的重复日期范围时,出现时间偏移不符合预期的问题:

  • 配置参数:起始时间2023-04-01 12:00:00,结束时间2023-04-04 18:00:00,时区设置为America/Mexico_City
  • 预期结果:每天生成的时间保持12:00-18:00(对应UTC的固定偏移)
  • 实际结果:从4月2日起,生成的时间变为11:00-17:00

问题代码

return new RRule(removeUndefinedFromObject({
   dtstart: utcToZonedTime(params.start, params.timezone),
   freq: RRule.DAILY,
   byweekday: params.weekdays.map((day) => weekdaysMap[day]),
   until: utcToZonedTime(params.end, params.timezone),
   tzid: params.timezone,
}));

问题根源

墨西哥政府已于2022年10月永久取消夏令时,但旧版本的时区规则仍在生效,导致时区偏移计算错误。该问题并非RRule库独有,date-fns等其他日期处理库也存在类似情况。

解决方法

将Node.js版本从14.x升级到18.x后,问题得到解决。原因是Node.js 18.x更新了内置的时区数据库(tz database),包含了墨西哥取消夏令时的最新规则。

内容的提问来源于stack exchange,提问作者Osvaldo Cordova A

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 01:35:45