Mulesoft Dataweave 零分区时间戳转换

Mulesoft Dataweave zero zoned timestamp conversion

我希望将日期时间字段转换为 ZonedDatetime,但时间戳为零。 我有一个像下面这样的功能 -

fun dateInSecToDateTimePST(d : String) = if (d != null)
                            (d as Number as DateTime {unit: "seconds"} >> "CST")
                        else null

这个的输出是

2020-11-20T21:30:00-06:00

但是我期望的输出如下所示-

2020-11-20T00:00:00-06:00

时间戳将始终保持为零,但有偏移量。有什么建议吗?我正在使用 %dw 2.0Mule4

使用日期时间类型,您可以分解日期时间输入并将其与归零的时间片段连接起来,如下所示:

%dw 2.0
output application/json
fun dateInSecToDateTimePST(d : String) = do { 
    var date = (d as Number as DateTime {unit: "seconds"}) as Date
    var time = "00:00:00" as Time
    var zone = "CST" as TimeZone
    ---
    if (d != null)
        date ++ time ++ zone
    else null
}
---
dateInSecToDateTimePST(payload.time)

如果需要,您也可以将时区设为动态。