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

如何使用DataWeave计算跨天时间戳的毫秒差值?

解决DataWeave跨天时间戳毫秒差值计算问题

直接对跨天的时间字符串相减会得到负值,原因是DataWeave默认将两个时间视为同一天的时间,未处理跨天逻辑。要解决这个问题,只需在计算出原始差值后,判断是否为负,若是则加上一天的总毫秒数(86400000)修正结果。

修改后的DataWeave代码:

output application/json
var time1 = "23:59:50.001"
var time2 = "00:00:10.001"
var diffMs = (time2 - time1) as Number {"unit" : "milliseconds"}
var oneDayMs = 24 * 60 * 60 * 1000
---
if (diffMs < 0) diffMs + oneDayMs else diffMs

逻辑说明:

  • 先计算两个时间的原始毫秒差值diffMs
  • 定义oneDayMs为一天的总毫秒数(24小时×60分钟×60秒×1000毫秒)
  • 若diffMs为负,说明是跨天场景,加上oneDayMs得到正确的跨天差值;非负则直接返回原始差值,兼容同天场景

测试验证:

  • 跨天场景:time1="23:59:50.001"、time2="00:00:10.001",原始差值为-86380000,加上86400000后得到20000毫秒,符合预期
  • 同天场景:time1="04:49:11.001"、time2="04:49:21.001",差值为10000毫秒,直接返回正确结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:22:03