%dw 2.0
output application/xml
fun normalize(date) = (date) replace "/" with "-" replace "." with "-"
---
dates: (payload.dates mapObject {
normalized_as_string: normalize($)
})
Parse Dates with DataWeave
These DataWeave examples define a function (fun
) in the DataWeave header to normalize date separators (/
, .
, and -
) within different date formats so that all of them use the same separator (-
).
Before you begin, note that DataWeave version 2 (%dw 2.0
) is for Mule 4 apps. For a
Mule 3 app, refer to DataWeave version 1
(%dw 1.0
) examples,
within the Mule 3.9 documentation set. For other Mule versions, you can use
the Mule Runtime version selector in the table of contents.
The examples use these functions:
-
replace
so that all dates match a single pattern. -
mapObject
to run through the thedate
elements. The script applies the normalizing function to eachdate
. -
as
(in the second DataWeave script) to change the data type of the values to a Date type with a specific date format.
Example: Returns Dates as String Types
<dates>
<date>26-JUL-16</date>
<date>27/JUL/16</date>
<date>28.JUL.16</date>
</dates>
<?xml version='1.0' encoding='US-ASCII'?>
<dates>
<normalized_as_string>26-JUL-16</normalized_as_string>
<normalized_as_string>27-JUL-16</normalized_as_string>
<normalized_as_string>28-JUL-16</normalized_as_string>
</dates>
Example: Returns Dates as Date Types
%dw 2.0
output application/xml
fun normalize(date) = (date) replace "/" with "-" replace "." with "-"
---
// Outputs date values as Date types in the specified format
dates: (payload.dates mapObject {
normalized_as_date: (normalize($) as Date {format: "d-MMM-yy"})
})
<dates>
<date>26-JUL-16</date>
<date>27/JUL/16</date>
<date>28.JUL.16</date>
</dates>
<?xml version='1.0' encoding='UTF-8'?>
<dates>
<normalized_as_date>2016-07-26</normalized_as_date>
<normalized_as_date>2016-07-27</normalized_as_date>
<normalized_as_date>2016-07-28</normalized_as_date>
</dates>