如何使用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
相关产品推荐
相关产品推荐

