Mule 4 - 将 DateTime 解析为 DD/MM/YYYY 24HH:MM:SS 格式?

Mule 4 - Parse DateTime as DD/MM/YYYY 24HH:MM:SS format?

我遇到了一个要求,我需要将传入的有效负载字符串 6-12-2019 2:13:30 解析为 DateTime 格式 DD/MM/YYYY 24HH:MM:SS

我尝试了几种方法,但似乎没有任何效果。

"6-12-2019 2:13:30" as DateTime {format : "d-M-yyyy h:m:ss"} 这导致错误说明...

"Cannot coerce String (6-12-2019 2:13:30) to DateTime, caused by: Text '6-12-2019 2:13:30' could not be parsed: Unable to obtain ZonedDateTime from TemporaAccessor: {SecondOfMinute=30, MicroOfSecond=0, MilliOfSecond=0, HourOfAmPm=2, MinuteOfHour=13, NanoOfSecond=0},ISO resolved to 2019-12-06 of type java.time.format.Parsed

有人可以帮我解决这个问题吗?

谢谢。

您输入的日期时间类型不匹配。它缺少时区,'h' 格式字符暗示它是 AM/PM 日期,但它丢失了。 LocalDateTime 不需要时区。您可以更改输入和格式或更改类型。

请在下面找到一些有效示例:

%dw 2.0
output application/json
---
{
    localDateTime: "6-12-2019 2:13:30 pm" as LocalDateTime {format : "d-MM-yyyy h:mm:ss a"},
    localDateTime24h: "6-12-2019 14:13:30" as LocalDateTime {format : "d-MM-yyyy H:mm:ss"},
    dateTime: "6-12-2019 2:13:30 +0500" as DateTime {format : "d-MM-yyyy H:mm:ss Z"}
}

输出:

{
  "localDateTime": "6-12-2019 2:13:30 PM",
  "localDateTime24h": "6-12-2019 14:13:30",
  "dateTime": "6-12-2019 2:13:30 +0500"
}

您可以尝试将传入日期转换为您的特定格式。然后根据需要重新格式化。在下面的示例中,我们将日期转换为 MM/dd/yyyy 格式并将其重新格式化为所需格式,即 y-MM-dd。 (date1 as Date {format: "MM/dd/yyyy"}) as String {format: "y-MM-dd"}