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

报错:未定义变量'substring',DW 0.1日期格式转换求助

解决DataWeave 0.1中substring报错的问题

我来帮你排查下问题根源,你的代码有两个关键错误导致了这个报错:

1. 变量定义方式不符合DataWeave 0.1语法

你不能直接在对象内部用var:payload.po.ordered_date这种形式定义变量。在DataWeave 0.1里,需要用%var指令在脚本顶部声明变量,或者在表达式作用域内使用let来临时定义。

2. substring的调用方式错误

DataWeave 0.1没有全局的substring()函数,字符串截取需要调用字符串对象的.substring()方法(类似Java的用法)。另外你原代码里的参数也不对,要得到20170822的格式,需要调整截取的索引或者换更简洁的处理方式。

修正后的代码示例

下面提供两种实现方式,你可以按需选择:

方式一:用substring拼接年月日

%dw 0.1
%output application/xml
%var orderedDate = payload.po.ordered_date
---
po: {
  originalDate: orderedDate,
  formattedDate: orderedDate.substring(0,4) ++ orderedDate.substring(5,7) ++ orderedDate.substring(8,10)
}

方式二:截取前10位后替换横杠(更简洁)

%dw 0.1
%output application/xml
%var orderedDate = payload.po.ordered_date
---
po: {
  originalDate: orderedDate,
  formattedDate: orderedDate.substring(0,10) replace "-" with ""
}

代码说明

  • 用%var在顶部声明orderedDate变量,存储原始的时间字符串。
  • 方式一中,通过.substring(startIndex, endIndex)分别提取年、月、日的部分,再用++拼接成无横杠的格式。
  • 方式二中,先截取前10位得到2017-08-22,再用replace方法把所有横杠替换为空,一步得到目标格式。

这样修改后,就不会再出现"There is no variable named 'substring'"的错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:57:13