2017-02-14 63 views
0

我有需要在哪裏需要使用dataweave查找兩個日期之間的差異,輸入和輸出都是XML格式。在mule esb中使用數據編織的日期操作

兩種日期格式均爲yyyy.mm.dd,輸出日期格式必須與mm.dd.yy或mm.dd.yyyy類似。

請幫助我,謝謝

+0

你可能想考慮的Java解決方案,而不是, https://stackoverflow.com/questions/27857901/calculating-processing-time-for-a-mule-flow-by格式化日期使用攔截器 –

回答

1

您可以格式化日期這樣的(例子):

yourInputDate爲:localdatetime {格式爲: 「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

0

您可以使用Java/Groovy創建全局函數,並使用DateTime對象來查找差異並從該函數返回。現在,您可以在數據織物中使用該功能。

1

在Dataweave,您可以將字符串轉換爲日期格式,然後直接減除他們

輸入

<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 
} 

輸出

{ 
    "difference": "P9Y9M14D" 
} 

9年9個月,14天

+0

嘿Abhay,我也得到了相同的輸出:)但這裏輸出日期格式(差異)必須是mm-dd-yyyy或mm-dd-yy – Thiru

+0

像09-09-09 9年9個月,14天?解釋一下 – Abhay

0

減去dataweave兩個Date。根據您的要求

%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" 
}