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

DataWeave夏令时场景下动态获取PST时区当日0点的实现问题

问题根源

你原有代码的核心问题是硬编码了UTC时间为T07:00:00Z,固定按UTC-8的偏移计算太平洋时区时间,没有考虑夏令时期间太平洋时区会切换为UTC-7的PDT,偏移量变化导致时间计算出错。同时你用的PST是固定UTC-8的时区缩写,本身不支持夏令时自动切换。


解决方案

不要手动拼接固定偏移的UTC时间,改用带地理信息的时区ID自动适配夏令时,直接在目标时区完成取当日日期、设置0点的操作,正确代码如下:

%dw 2.0
output application/json
// 用地理时区ID,自动适配夏令时/冬令时
var targetTimezone = 'America/Los_Angeles'
// 先转目标时区取当前日期,再拼接当日0点时间
var targetMidnight = (now() >> targetTimezone) as Date ++ |00:00:00|
---
{
    fromDate: targetMidnight as String {format: "yyyy-MM-dd'T'HH:mm:ssXXX"},
    toDate: targetMidnight as String {format: "yyyy-MM-dd'T'HH:mm:ssXXX"}
}

效果说明

  • 冬令时时段输出和你期望的完全一致,例如2021-11-10T00:00:00-08:00
  • 夏令时时段自动输出对应偏移的当日0点,例如2024-06-10T00:00:00-07:00,不会再出现前一天23点的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:45:02