如何在Dataweave-Mulesoft中执行日期操作

时间:2016-01-14 15:10:28

标签: xml xslt xpath mule dataweave

我有一个逻辑来过滤掉在30天之前加入的学生。我有一个加入日期和在xml元素中的lastdate。我必须使用数据编织从这两个字段中减去日期。

<School>
  <joindate>2015-10-18T00:00:00.000-08:00</joindate>
  <lastdate>2016-01-18</lastdate>
</School>

2 个答案:

答案 0 :(得分:2)

XPath / XSLT 2.0及更高版本中有许多date and time functions可用。看来DataWeave supports up to XSLT 3.0

以下表达式将针对所有学校元素,其中 lastdate joindate 之间的天数差异小于30。

//School[days-from-duration(xs:date(lastdate) - xs:date(xs:dateTime(joindate))) lt 30]

答案 1 :(得分:2)

尝试使用DataWeave Date Time操作:

https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#adding-a-period-of-time

从XML中获取值并将它们存储在DataWeave中的变量中,将它们转换为:date并在脚本中将它们减去。

这是一个给你一个对象的例子,我想你能从那里解决它?

%dw 1.0
%output application/java
%var join = payload.School.joindate as :date
%var last = payload.School.lastdate as :date
---
period: join - last