【发布时间】:2021-12-29 19:39:09
【问题描述】:
我有一个 Mule Server 4.3.0 EE 应用程序,我想在其中将 DateTime 舍入到最近的一刻钟,结果也是 DateTime。一些例子:
- 如果输入为上午 9:18:32,则输出为同一天上午 9:15:00
- 如果输入为上午 9:33:33,则输出为同一天上午 9:30:00
- 如果输入为上午 9:59:58,则输出为同一天上午 9:45:00
- 如果输入为上午 10:00:00,则输出为同一天上午 10:00:00
在此应用程序中,输入将始终为纽约时间,DST 是否生效取决于一年中的时间。
这是我到目前为止的想法。保留日期和小时,将分钟截断到最接近的 15,将秒设置为零,并保留时区。 (“00”分钟有一个特殊情况,因为如果分钟是单个“0”,它不会转换。)
我知道较新的 Mule 版本具有 Dates 包,这将使这更加优雅,但目前升级不是我的选择。这是否与满足这些要求的代码一样好,或者是否有更好的方法可以在不升级 Mule 的情况下做到这一点?谢谢。
%dw 2.0
import * from dw::core::Strings
output application/json
fun roundBack(inputTime: DateTime): DateTime =
(inputTime[0 to 13] ++
(if (inputTime.minutes < 15) '00' else (inputTime.minutes - mod(inputTime.minutes, 15) as String)) ++
':00' ++
inputTime[-6 to -1]
) as DateTime
【问题讨论】:
标签: datetime dataweave mulesoft