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

如何在WSO2 EI Property Mediator中对SYSTEM_DATE进行加减一天操作?

WSO2 ESB 基于SYSTEM_DATE获取前后一天日期的实现方案

有两种常用的稳定实现方式:

方案1:使用XPath 2.0日期运算(轻量无额外依赖)

WSO2 ESB/EI默认支持XPath 2.0的日期运算语法,直接在Property Mediator中修改expression即可,不需要引入其他组件:

  • 前一天日期获取配置:
<property expression="xs:date(get-property('SYSTEM_DATE', 'yyyy-MM-dd')) - xs:dayTimeDuration('P1D')" name="previousDay" scope="default" type="STRING"/>
  • 后一天日期获取配置:
<property expression="xs:date(get-property('SYSTEM_DATE', 'yyyy-MM-dd')) + xs:dayTimeDuration('P1D')" name="nextDay" scope="default" type="STRING"/>

注意:低版本ESB如果提示xs命名空间未找到,可在序列根节点添加命名空间声明xmlns:xs="http://www.w3.org/2001/XMLSchema",6.x以上版本默认已注册该命名空间,无需额外配置。


方案2:使用Script Mediator实现(兼容性强,适合复杂日期处理场景)

如果需要做更多自定义日期逻辑,可通过JS脚本中介器实现:

<script language="js"><![CDATA[
    // 从上下文取已获取的当前日期
    var currentDate = new Date(mc.getProperty("date"));
    // 计算前一天
    var prevDate = new Date(currentDate);
    prevDate.setDate(currentDate.getDate() - 1);
    var prevDateStr = prevDate.toISOString().split('T')[0];
    // 计算后一天
    var nextDate = new Date(currentDate);
    nextDate.setDate(currentDate.getDate() + 1);
    var nextDateStr = nextDate.toISOString().split('T')[0];
    // 将结果存入上下文供后续使用
    mc.setProperty("previousDay", prevDateStr);
    mc.setProperty("nextDay", nextDateStr);
]]></script>

两种方案最终输出的previousDay、nextDay均为yyyy-MM-dd格式的字符串,和你原有date属性的格式完全兼容,可直接使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 18:45:02