Преобразование строки в дату в Dataweave

Я использую Anypoint Studio 6.1 и Mule 3.8.1, и я хочу преобразовать следующую дату 2017-03-02T17:30:31.377Z в следующий формат Thurs, 1 Mar 2017 17:30:31 GMT в Dataweave.

Код Dataweave в настоящее время выглядит так:

{
    datetime: "2017-03-02T17:30:31.377Z" as :datetime {format: "EEE, d MMM yyyy HH:mm:ss z"}
}

но я получаю сообщение об ошибке, что он не может привести строку к дате. Как я могу изменить дату, указанную выше, на правильный формат?

Спасибо


person user3165854    schedule 02.03.2017    source источник


Ответы (1)


Ссылаясь на документацию SimpleDateFormat, мы должны определите определенный часовой пояс, а не только Z. В этом примере мы должны преобразовать дату ввода: с 2017-03-02T17:30:31.377Z на 2017-03-02T17:30:31.377+0700. А затем продолжайте преобразовывать его в ожидаемый формат.

  1. Преобразуйте дату ввода: ("2017-03-02T17:30:31.377Z" replace "Z" with "+0700")
  2. Преобразуйте дату ввода из String в DateTime: as :datetime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"}
  3. Измените формат даты: as :string {format: "EEE, d MMM yyyy HH:mm:ss Z"}

Полное выражение:

{
    datetime: ("2017-03-02T17:30:31.377Z" replace "Z" with "+0700") as :datetime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSZ"} as :string {format: "EEE, d MMM yyyy HH:mm:ss Z"}
}
person sulthony h    schedule 03.03.2017
comment
Спасибо, но как мне заставить его отображать часовой пояс как GMT, который должен отображаться при использовании строчной буквы z? Он по-прежнему показывает ошибки, когда я пытаюсь форматировать: EEE, d MMM yyyy HH: mm: ss z - person user3165854; 08.03.2017