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

如何在Mule4中合并日期与时间输出yyyy-MM-ddTHH:mm:ss.SSSZ格式

DataWeave 2.0 实现方案

完全可以通过DataWeave 2.0实现该需求,以下是具体实现逻辑和代码示例:

前提说明

我们默认输入的8位时间字符串格式为HHmmssSSS(前2位为小时,3-4位为分钟,后4位为秒和毫秒),且按照需求固定输出的ss.SSS为00.000。如果时间字符串为其他格式(比如当日总毫秒数),可对应调整拆分逻辑。

实现代码

%dw 2.0
output application/json
// 输入参数示例
var rawDateStr = "2021-09-04T00:00:00-05:00"
var timeStr = "37320000"

// 1. 解析原始日期为DateTime类型
var parsedDate = rawDateStr as DateTime {format: "yyyy-MM-dd'T'HH:mm:ssxxx"}
// 2. 提取时间字符串中的小时、分钟
var hour = timeStr[0 to 1] as Number
var minute = timeStr[2 to 3] as Number
---
// 3. 给原始日期叠加对应时长后格式化输出
(parsedDate + |PT$(hour)H$(minute)M|) as String {format: "yyyy-MM-dd'T'HH:mm:00.000Z"}

逻辑说明

  • 首先按照原始日期的格式yyyy-MM-dd'T'HH:mm:ssxxx将字符串转为DateTime类型,保留原时区信息。
  • 从8位时间字符串中截取前两位作为小时、3-4位作为分钟,转为数值类型。
  • 使用时间周期运算给原始日期叠加对应时长的小时和分钟,DataWeave会自动处理跨天、跨月等异常场景。
  • 最终格式化输出时,直接固定秒和毫秒为00.000,输出带UTC时区标识Z的目标格式。

适配场景扩展

如果你的输入时间字符串是当日累计的总毫秒数,可调整时间解析逻辑如下:

%dw 2.0
output application/json
var rawDateStr = "2021-09-04T00:00:00-05:00"
var timeMsStr = "37320000"

var parsedDate = rawDateStr as DateTime {format: "yyyy-MM-dd'T'HH:mm:ssxxx"}
var totalMs = timeMsStr as Number
var hour = (totalMs / 3600000) floor as Number
var minute = ((totalMs mod 3600000) / 60000) floor as Number
---
(parsedDate + |PT$(hour)H$(minute)M|) as String {format: "yyyy-MM-dd'T'HH:mm:00.000Z"}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:09:00