在 DWL 2.0/Mule4 中将“2024-01-10T10:50:16.901-0500”时间戳转换为“2024-01-10T10:50:16.901Z”

问题描述 投票:0回答:2

我在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”

mule dataweave mulesoft mule4 anypoint-studio
2个回答
0
投票

如果我明白你需要什么,你可以使用具有不同输出格式的函数。

以下代码适用于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")
}


0
投票

不要使用字符串连接来处理日期时间。这是一个不好的做法。

而是使用您可以在许多页面中找到的模式,并将表达式包装在函数或变量中以重用它:

fun convertDateTimeToUtc(dt: DateTime)=
 dt as String {format: "yyyy-MM-dd'T'HH:mm:ss'Z'"}
© www.soinside.com 2019 - 2024. All rights reserved.