#datetime #dataweave #mulesoft
#дата и время #dataweave #mulesoft
Вопрос:
Я хочу преобразовать поле Datetime в 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.0
и Mule4
Ответ №1:
С помощью типов даты и времени вы можете разбить ввод даты и времени и объединить его обратно вместе с обнуленной временной частью следующим образом:
%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)
при необходимости часовой пояс также может быть динамическим.