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

如何在WSO2 Micro Integrator中将时间戳转换为UTC格式

在WSO2 Micro Integrator中将带时区的时间戳转换为UTC格式

你需要将输入的带时区偏移的时间戳(如2020-10-06T08:08:35-04:00)转换为UTC格式,以下是几种在WSO2 MI中可行的实现方式:

方法一:使用Script Mediator(JavaScript)

通过Script Mediator调用JavaScript的Date对象直接处理时间转换,示例配置如下:

<sequence name="ConvertToUTCSequence" xmlns="http://ws.apache.org/ns/synapse">
    <script language="js"><![CDATA[
        // 从请求JSON中获取时间戳(根据实际请求结构调整路径)
        var reqPayload = mc.getPayloadJSON();
        var inputTimestamp = reqPayload.timestamp;
        
        // 解析带时区的时间并转换为UTC格式
        var dateObj = new Date(inputTimestamp);
        var utcTimestamp = dateObj.toISOString();
        
        // 若不需要毫秒部分,可手动截取字符串
        // utcTimestamp = utcTimestamp.slice(0, -5) + 'Z';
        
        // 将转换后的时间写回请求体
        reqPayload.timestamp = utcTimestamp;
        mc.setPayloadJSON(reqPayload);
    ]]></script>
</sequence>

转换后示例输入会得到2020-10-06T12:08:35.000Z,如果不需要毫秒段,可通过字符串截取调整格式。

方法二:使用XPath 3.1函数(推荐)

WSO2 MI支持XPath 3.1,可直接通过adjust-dateTime-to-timezone函数完成时区转换,示例配置:

<sequence name="ConvertToUTCSequence" xmlns="http://ws.apache.org/ns/synapse">
    <!-- 提取并转换时间戳为UTC,$ctx:INPUT_TIMESTAMP为提前获取的输入时间属性 -->
    <property expression="adjust-dateTime-to-timezone(xs:dateTime($ctx:INPUT_TIMESTAMP), xs:dayTimeDuration('PT0H'))" 
              name="UTC_TIMESTAMP" 
              scope="default" 
              type="STRING"/>
    
    <!-- 拼接Z后缀以符合标准UTC格式 -->
    <property expression="concat($ctx:UTC_TIMESTAMP, 'Z')" 
              name="FORMATTED_UTC_TIMESTAMP" 
              scope="default" 
              type="STRING"/>
    
    <!-- 将转换后的时间替换回请求体(以JSON为例) -->
    <payloadFactory media-type="json">
        <format>{"timestamp": "$1"}</format>
        <args>
            <arg evaluator="xml" expression="$ctx:FORMATTED_UTC_TIMESTAMP"/>
        </args>
    </payloadFactory>
</sequence>

说明:

  • adjust-dateTime-to-timezone函数接收两个参数:目标时间对象和目标时区偏移(PT0H代表UTC+0时区)
  • 转换后默认格式为2020-10-06T12:08:35,通过concat添加Z后缀即可匹配标准UTC格式。

方法三:使用Data Mediator(DataMapper)

如果你的API使用DataMapper做数据映射,可直接在映射规则中配置时间转换:

  1. 在DataMapper编辑器中,关联源时间字段与目标字段
  2. 点击目标字段的转换规则,选择Date -> Convert Timezone
  3. 设置源时区为Auto Detect,目标时区为UTC
  4. 配置输出格式为yyyy-MM-dd'T'HH:mm:ss'Z'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:25:17