0

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

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

2 回答 2

2

试试 DataWeave 日期时间操作:

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
于 2016-01-14T18:02:32.853 回答
2

XPath/XSLT 2.0 和更高版本提供了许多日期和时间函数。DataWeave似乎支持 XSLT 3.0

以下表达式将处理lastdatejoindate之间的天数差异小于 30的所有School元素。

//School[days-from-duration(xs:date(lastdate) - xs:date(xs:dateTime(joindate))) lt 30]
于 2016-01-14T15:42:47.420 回答