我在Mule4中有一个变量定义为receiptDateTime,它具有以下值:
output application/json
---
vars.receiptDateTime
vars.receiptDateTime 的当前输出格式是“2024-01-10T10:50:16.901-0500”,但我需要将其转换为“2024-01-10T10:50:16.901Z”这种格式。
我尝试在 DWL Playground 中执行此操作并成功实现转换。以下是 DWL 代码:
output application/json
var h = payload.receiptDateTime as LocalDateTime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSX"} as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"}
var formattedDate = h ++ 'Z'
---
{
"h": formattedDate
}
有没有更简单的方法来使用函数完成转换,在该函数中我将输入变量发送到函数并获取格式化的日期。
预期输出格式: “2024-01-10T09:57:33.523Z”
如果我明白你需要什么,你可以使用具有不同输出格式的函数。
以下代码适用于dataweave:
%dw 2.0
output application/json
fun formatDateTime(dt: String): String =
(dt as LocalDateTime {format: "yyyy-MM-dd'T'HH:mm:ss.SSSX"} as String {format: "yyyy-MM-dd'T'HH:mm:ss.SSS"}) ++ 'Z'
---
{
"formattedDate": formatDateTime("2024-01-10T10:50:16.901-0500")
}
不要使用字符串连接来处理日期时间。这是一个不好的做法。
而是使用您可以在许多页面中找到的模式,并将表达式包装在函数或变量中以重用它:
fun convertDateTimeToUtc(dt: DateTime)=
dt as String {format: "yyyy-MM-dd'T'HH:mm:ss'Z'"}