转换为正确的日期时间格式 - dataweave

Convert to proper dateTime format - dataweave

我有一个请求,格式如下

{
   "updatedTime": "Mon Mar 14 15:34:47 NZDT 2022"
}

响应应转换为“yyyy-MM-dd'T'HH:mm:ss”

{
"updatedTime": "2022-03-14'T'15:34:47"
}

我还参考了 Mule 文档 https://docs.mulesoft.com/dataweave/2.3/dataweave-cookbook-format-dates。有什么想法吗?谢谢

使用 Mule4、Dataweave 2.0

试试这个方法Date-Parsing

%dw 2.0
output application/json
---
"updatedTime":(payload.updatedTime as String replace "NZDT" with "GMT")  as DateTime {format: "EEE MMM dd HH:mm:ss O yyyy"} as LocalDateTime

输出

{
  "updatedTime": "2022-03-14T15:34:47"
}

您应该使用您共享的文档 link 中的模式字符,并为整个日期构建模式。您还可以搜索有关 Java 时间包模式的示例,DataWeave date/time 模式基于这些模式。

可能不明显的是使用模式 zz 作为时区,使用 eee 作为本地化日期名称。

%dw 2.0
output application/json
---
{ 
    updatedTime: payload.updatedTime 
        as DateTime { format: "eee MMM dd HH:mm:ss zz yyyy" } 
        as LocalDateTime
}

另一种转换给定输入的方法是

%dw 2.0
output application/json
---
payload.updatedTime as DateTime {format: "EEE MMM dd HH:mm:ss z yyyy"} 
as DateTime {format: "yyyy-MM-dd'T'HH:mm:ss"}    

虽然 @aled 的答案是正确的,但我真的很喜欢 Dataweave 中的 update operator,而且您可以像这样重写 Dataweave:

%dw 2.0
output application/json
---
payload update {
    case .updatedTime -> $ as DateTime { format: "eee MMM dd HH:mm:ss zz yyyy" } as LocalDateTime
}