我有需要在哪里需要使用dataweave在两个日期之间找到差异,输入和输出都是XML格式。
日期格式均为yyyy.mm.dd,输出日期格式必须与mm.dd.yy或mm.dd.yyyy相同。
请帮助我,谢谢
答案 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"
}