---
schema_version: "1"
id: 4840a404545f52ada3312bbedad01451504445a3f73dd8f50621e6e82d78647c
title: ++
collection: mulesoft
version: current
locale: en-us
portal_url: https://docs.salesforce.com/mulesoft/current/en-us/dataweave/2.4/dw-core-functions-plusplus.md
canonical_url: https://docs.mulesoft.com/dataweave/2.4/dw-core-functions-plusplus
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 3778dbfb40767561016ada43722521eeec67b76f29ab6ddeb1c5ce84f90ca271
description: MuleSoft Documentation Site
release: "2.4"
latest: false
---
---
product: DataWeave
version: 2.4
---

# ++

> For the full documentation index, see: https://docs.mulesoft.com/llms.txt

## ++<S, T>(source: Array<S>, with: Array<T>): Array<S | T>

Concatenates two values.

This version of `++` concatenates the elements of two arrays into a new array. Other versions act on
strings, objects, and the various date and time formats that DataWeave supports.

If the two arrays contain different types of elements, the resulting array is all of `S` type
elements of `Array<S>` followed by all the `T` type elements of `Array<T>`. Either of the arrays can
also have mixed-type elements. Also note that the arrays can contain any supported data type.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>source</code></p></td><td><p>The source array.</p></td></tr><tr><td><p><code>with</code></p></td><td><p>The array to concatenate with the source array.</p></td></tr></tbody></table>

### Example

The example concatenates an `Array<Number>` with an `Array<String>`. Notice that it outputs the
result as the value of a JSON object.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "result" : [0, 1, 2] ++ ["a", "b", "c"] }
```

#### Output

```JSON
{ "result": [0, 1, 2, "a", "b", "c"] }
```

### Example

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "a" : [0, 1, true, "my string"] ++ [2, [3,4,5], {"a": 6}] }
```

#### Output

```JSON
{ "a": [0, 1, true, "my string", 2, [3, 4, 5], { "a": 6}] }
```

## ++(source: String, with: String): String

Concatenates the characters of two strings.

Strings are treated as arrays of characters, so the `++` operator concatenates the characters of
each string as if they were arrays of single-character string.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>source</code></p></td><td><p>The source string.</p></td></tr><tr><td><p><code>with</code></p></td><td><p>The string to concatenate with the source string.</p></td></tr></tbody></table>

### Example

This example concatenates two strings. Here, `Mule` is treated as
`Array<String> ["M", "u", "l", "e"]`. Notice that the example outputs the result `MuleSoft` as the
value of a JSON object.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "name" : "Mule" ++ "Soft" }
```

#### Output

```JSON
{ "name": "MuleSoft" }
```

## ++<T <: Object, Q <: Object>(source: T, with: Q): T & Q

Concatenates two objects and returns one flattened object.

The `++` operator extracts all the key-values pairs from each object, then combines them together
into one result object.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>source</code></p></td><td><p>The source object.</p></td></tr><tr><td><p><code>with</code></p></td><td><p>The object to concatenate with the source object.</p></td></tr></tbody></table>

### Example

This example concatenates two objects and transforms them to XML. Notice that it flattens the array
of objects `{aa: "a", bb: "b"}` into separate XML elements and that the output uses the keys of the
specified JSON objects as XML elements and the values of those objects as XML values.

#### Source

```DataWeave
%dw 2.0
output application/xml
---
{ concat : {aa: "a", bb: "b"} ++ {cc: "c"} }
```

#### Output

```XML
<?xml version="1.0" encoding="UTF-8"?>
<concat>
  <aa>a</aa>
  <bb>b</bb>
  <cc>c</cc>
</concat>
```

## ++(date: Date, time: LocalTime): LocalDateTime

Appends a `LocalTime` with a `Date` to return a `LocalDateTime` value.

`Date` and `LocalTime` instances are written in standard Java notation, surrounded by pipe (`|`)
symbols. The result is a `LocalDateTime` object in the standard Java format. Note that the order in
which the two objects are concatenated is irrelevant, so logically,
``Date LocalTime` produces the same result as `LocalTime Date``.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>date</code></p></td><td><p>A <code>Date</code>.</p></td></tr><tr><td><p><code>time</code></p></td><td><p>A <code>LocalTime</code>, a time format without a time zone.</p></td></tr></tbody></table>

### Example

This example concatenates a `Date` and `LocalTime` object to return a `LocalDateTime`.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "LocalDateTime" : (|2017-10-01| ++ |23:57:59|) }
```

#### Output

```JSON
{ "LocalDateTime": "2017-10-01T23:57:59" }
```

## ++(time: LocalTime, date: Date): LocalDateTime

Appends a `LocalTime` with a `Date` to return a `LocalDateTime`.

Note that the order in which the two objects are concatenated is irrelevant, so logically,
``LocalTime Date` produces the same result as `Date LocalTime``.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>time</code></p></td><td><p>A <code>LocalTime</code>, a time format without a time zone.</p></td></tr><tr><td><p><code>date</code></p></td><td><p>A <code>Date</code>.</p></td></tr></tbody></table>

### Example

This example concatenates `LocalTime` and `Date` objects to return a `LocalDateTime`.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "LocalDateTime" : (|23:57:59| ++ |2003-10-01|) }
```

#### Output

```JSON
{ "LocalDateTime": "2017-10-01T23:57:59" }
```

## ++(date: Date, time: Time): DateTime

Appends a `Date` to a `Time` in order to return a `DateTime`.

Note that the order in which the two objects are concatenated is irrelevant, so logically, `Date` +
`Time` produces the same result as `Time` + `Date`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>date</code></p></td><td><p>A <code>Date</code>.</p></td></tr><tr><td><p><code>time</code></p></td><td><p>A <code>Time</code>, a time format that can include a time zone (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `Date` and `Time` objects to return a `DateTime`.

#### Source

```DataWeave
%dw 2.0
output application/json
---
[ |2017-10-01| ++ |23:57:59-03:00|, |2017-10-01| ++ |23:57:59Z| ]
```

#### Output

```JSON
[ "2017-10-01T23:57:59-03:00", "2017-10-01T23:57:59Z" ]
```

## ++(time: Time, date: Date): DateTime

Appends a `Date` to a `Time` object to return a `DateTime`.

Note that the order in which the two objects are concatenated is irrelevant, so logically, `Date` +
`Time` produces the same result as a `Time` + `Date`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>time</code></p></td><td><p>A <code>Time</code>, a time format that can include a time zone (<code>Z</code> or <code>HH:mm</code>).</p></td></tr><tr><td><p><code>date</code></p></td><td><p>A <code>Date</code>.</p></td></tr></tbody></table>

### Example

This example concatenates a `Date` with a `Time` to output a `DateTime`. Notice that the inputs are
surrounded by pipes (`|`).

#### Source

```DataWeave
%dw 2.0
output application/json
---
|2018-11-30| ++ |23:57:59+01:00|
```

#### Output

```JSON
"2018-11-30T23:57:59+01:00"
```

### Example

This example concatenates `Time` and `Date` objects to return `DateTime` objects. Note that the
first `LocalTime` ``object is coerced to a `Time``. Notice that the order of the date and time
inputs does not change the order of the output `DateTime`.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{
  "DateTime1" : (|23:57:59| as Time) ++ |2017-10-01|,
  "DateTime2" : |23:57:59Z| ++ |2017-10-01|,
  "DateTime3" : |2017-10-01| ++ |23:57:59+02:00|
}
```

#### Output

```JSON
{
  "DateTime1": "2017-10-01T23:57:59Z",
  "DateTime2": "2017-10-01T23:57:59Z",
  "DateTime3": "2017-10-01T23:57:59+02:00"
}
```

## ++(date: Date, timezone: TimeZone): DateTime

Appends a `TimeZone` to a `Date` type value and returns a `DateTime` result.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>date</code></p></td><td><p>A <code>Date</code>.</p></td></tr><tr><td><p><code>timezone</code></p></td><td><p>A <code>TimeZone</code> (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `Date` and `TimeZone` (`-03:00`) to return a `DateTime`. Note the local
time in the `DateTime` is `00:00:00` (midnight).

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "DateTime" : (|2017-10-01| ++ |-03:00|) }
```

#### Output

```JSON
{ "DateTime": "2017-10-01T00:00:00-03:00" }
```

## ++(timezone: TimeZone, date: Date): DateTime

Appends a `Date` to a `TimeZone` in order to return a `DateTime`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>date</code></p></td><td><p>A <code>Date</code>.</p></td></tr><tr><td><p><code>timezone</code></p></td><td><p>A <code>TimeZone</code> (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `TimeZone` (`-03:00`) and `Date` to return a `DateTime`. Note the local
time in the `DateTime` is `00:00:00` (midnight).

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "DateTime" : |-03:00| ++ |2017-10-01| }
```

#### Output

```JSON
{ "DateTime": "2017-10-01T00:00:00-03:00" }
```

## ++(dateTime: LocalDateTime, timezone: TimeZone): DateTime

Appends a `TimeZone` to a `LocalDateTime` in order to return a `DateTime`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>dateTime</code></p></td><td><p>A <code>LocalDateTime</code>, a date and time without a time zone.</p></td></tr><tr><td><p><code>timezone</code></p></td><td><p>A <code>TimeZone</code> (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `LocalDateTime` and `TimeZone` (`-03:00`) to return a `DateTime`.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "DateTime" : (|2003-10-01T23:57:59| ++ |-03:00|) }
```

#### Output

```JSON
{ "DateTime": "2003-10-01T23:57:59-03:00 }
```

## ++(timezone: TimeZone, datetime: LocalDateTime): DateTime

Appends a `LocalDateTime` to a `TimeZone` in order to return a `DateTime`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>dateTime</code></p></td><td><p>A <code>LocalDateTime</code>, a date and time without a time zone.</p></td></tr><tr><td><p><code>timezone</code></p></td><td><p>A <code>TimeZone</code> (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `TimeZone` (`-03:00`) and `LocalDateTime` to return a `DateTime`.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "TimeZone" : (|-03:00| ++ |2003-10-01T23:57:59|) }
```

#### Output

```JSON
{ "TimeZone": "2003-10-01T23:57:59-03:00" }
```

## ++(time: LocalTime, timezone: TimeZone): Time

Appends a `TimeZone` to a `LocalTime` in order to return a `Time`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>time</code></p></td><td><p>A <code>LocalTime</code>, time format without a time zone.</p></td></tr><tr><td><p><code>timezone</code></p></td><td><p>A <code>TimeZone</code> (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `LocalTime` and `TimeZone` (`-03:00`) to return a `Time`. Note that the
output returns\`:00\` for the unspecified seconds.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "Time" : (|23:57| ++ |-03:00|) }
```

#### Output

```JSON
{ "Time": "23:57:00-03:00" }
```

## ++(timezone: TimeZone, time: LocalTime): Time

Appends a `LocalTime` to a `TimeZone` in order to return a `Time`.

### Parameters

<table><colgroup><col> <col></colgroup><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><p><code>time</code></p></td><td><p>A <code>LocalTime</code>, a time format without a time zone.</p></td></tr><tr><td><p><code>timezone</code></p></td><td><p>A <code>TimeZone</code> (<code>Z</code> or <code>HH:mm</code>).</p></td></tr></tbody></table>

### Example

This example concatenates `TimeZone` (`-03:00`) and `LocalTime` to return a `Time`. Note that the
output returns\`:00\` for the unspecified seconds.

#### Source

```DataWeave
%dw 2.0
output application/json
---
{ "Time" : (|-03:00| ++ |23:57|) }
```

#### Output

```JSON
{
  "Time": "23:57:00-03:00"
}
```
