使用数据编织在mule esb中进行日期操作

时间:2017-02-14 08:06:09

标签: mule dataweave

我有需要在哪里需要使用dataweave在两个日期之间找到差异,输入和输出都是XML格式。

日期格式均为yyyy.mm.dd,输出日期格式必须与mm.dd.yy或mm.dd.yyyy相同。

请帮助我,谢谢

4 个答案:

答案 0 :(得分:1)

您可以格式化这样的日期(示例):

yourInputDate as:localdatetime {format:" yyyy-MM-dd' T' HH:mm:ss"})

你可以添加和减去日期,另一个例子我如何在带变量的项目中使用它:

%var stamp = (now as :localdatetime {format: "yyyy-MM-dd'T'HH:mm:ss"})
%var dayDiff = ("P" ++ (stamp.dayOfWeek - 1) ++ "D") as :period
%var firstDateWeek = (stamp - dayDiff) as :localdatetime {format: "yyyy-MM-dd"}

这里的文档:https://docs.mulesoft.com/mule-user-guide/v/3.8/dataweave-types#datetime

答案 1 :(得分:1)

在Dataweave中,您可以将字符串转换为日期格式,然后只需将它们减去

<强>输入

system type

<强>变换

<dates>
   <startDate>2007.05.01</startDate>
   <endDate>2017.02.15</endDate>
</dates>

<强>输出

%dw 1.0
%var startDate = payload.dates.startDate as :date {format: "yyyy.MM.dd"}
%var endDate = payload.dates.endDate as :date {format: "yyyy.MM.dd"}
%output application/json
---
{
    difference: startDate - endDate
}

9年,9个月,14天

答案 2 :(得分:0)

您可以使用Java / Groovy创建全局函数,并使用DateTime对象查找差异并从该函数返回。现在,您可以在数据编织中使用该功能。

答案 3 :(得分:0)

在dataweave中减去两个日期。根据您的要求格式化日期

%dw 1.0
%output application/json
---
{
  a: |23:59:56-03:00| - |22:59:56-00:00|,
  b: |2003-10-01| - |2002-09-23|
}

{
  "a": "PT-4H",
  "b": "P-1Y-8D"
}