Я не уверен, что мы можем воспользоваться преимуществами Time Types, которые включают DW, чтобы решить эту проблему, поэтому я написал решение, использующее пользовательский тип HoursMinutes, который позволяет часам быть больше 24, анализирует Number до HoursMinutes, добавьте их и, наконец, снова преобразуйте в Number.
Может быть, я слишком усложняю это ... хахах
%dw 2.0
output application/json
type HoursMinutes = {hour:Number, minute: Number}
fun toHours(n: Number): HoursMinutes = do {
var split = n as String splitBy "."
var fromMin = floor(split[1] as Number / 60)
---
{hour:floor(n) + fromMin, minute:split[1] as Number mod 60}
}
fun add(hour1:HoursMinutes, hour2: HoursMinutes): HoursMinutes = do {
var fromMin = floor((hour1.minute + hour2.minute) / 60)
---
{hour: hour1.hour + hour2.hour + fromMin, minute: (hour1.minute + hour2.minute) mod 60}
}
fun toNumber(h: HoursMinutes) = (h.hour as String ++"."++ h.minute as String) as Number
---
[
{
"hours": toNumber(payload reduce ((item, accumulator:HoursMinutes = {hour:0, minute:0}) -> accumulator add toHours(item.hours)))
}
]