Dataweave 2.0 - Невозможно принудительно привести строку к LocalDateTime - PullRequest
0 голосов
/ 17 апреля 2019

Я получаю файл CSV с данными, которые преобразую в application / java.

Одним из полей (Creation_Date) является поле DateTime, которое я получаю как String, поскольку поле вывода имеет строковый тип.

Поле ввода: Creation_Date ( String ) - Пример : 2019-03-02 07: 00: 00.000

Поле вывода: CreatedDate ( String ) - Пример : 2019-03-02 08: 00: 00.000

Я использую этот код в своем преобразовании Dataweave 2.0, потому что я хочу добавить еще один час к вводу datetime:

CreatedDate: payload.Creation_date as LocalDateFormat {format: "yyyy-MM-dd HH:mm:ss+01:00"}

Но он возвращает ошибку:

 Cannot coerce a String to a Localdatetime, caused by CreatedDate

Ответы [ 2 ]

3 голосов
/ 17 апреля 2019

Для добавления или изменения частей данных, таких как добавление часов, необходимо преобразовать их в LocalDateTime, а затем использовать период, чтобы добавить определенный период времени к дате и времени. Также необходимо в виде миллисекунд для форматирования на основе ожидаемого ввода / вывода. Попробуйте это, но измените pretendPayload на полезную нагрузку для вашего примера:

%dw 2.0
output application/json
var pretendPayload = {Creation_date: "2019-03-02 07:00:00.000"}

type LocalDateFormat = LocalDateTime { format: "yyyy-MM-dd HH:mm:ss.SSS" }
---
{
    CreatedDate: (pretendPayload.Creation_date as LocalDateFormat + |PT1H|) as String{format: "yyyy-MM-dd HH:mm:ss.SSS" }
}

Информация о периоде здесь: https://docs.mulesoft.com/mule-runtime/4.1/dataweave-types#dw_type_dates_period

0 голосов
/ 17 апреля 2019

Вы можете использовать now () в dataweave 2.0.Проверьте URL: https://docs.mulesoft.com/mule-runtime/4.1/dw-core-functions-now.

Надеюсь, это поможет вам.

...