es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Redondear hacia atrás a cuartos de hora en Mulesoft Dataweave.

Tengo una aplicación de Mule Server 4.3.0 EE, y en ella quiero redondear una fecha y hora (DateTime) al cuarto de hora más reciente, con el resultado también siendo una fecha y hora (DateTime). Algunos ejemplos:

si la entrada es 9:18:32 AM, entonces la salida es 9:15:00 AM el mismo día
si la entrada es 9:33:33 AM, entonces la salida es 9:30:00 AM el mismo día
si la entrada es 9:59:58 AM, entonces la salida es 9:45:00 AM el mismo día
si la entrada es 10:00:00 AM, entonces la salida es 10:00:00 AM el mismo día

En esta aplicación, la entrada siempre estará en hora de Nueva York, con el horario de verano en efecto o no dependiendo de la época del año.

Esto es lo que he creado hasta ahora. Mantener la fecha y hora, truncar los minutos al cuarto de hora más cercano, establecer los segundos en cero y mantener la zona horaria. (Hay un caso especial para los minutos ’00’ porque no se convertirá si los minutos son un solo ‘0’.)

Sé que las versiones más nuevas de Mule tienen el paquete Dates, lo que haría esto mucho más elegante, pero la actualización no es una opción para mí en este momento. ¿Es este código lo mejor que puede ser para esos requisitos, o hay una mejor forma de hacerlo sin actualizar Mule? Gracias.

%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

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Este código debería hacer el trabajo por ti. Toma la entrada DateTime, trunca los minutos al cuarto de hora más cercano, establece los segundos en cero, y mantiene la zona horaria. También se tiene en cuenta el caso especial para los minutos 00.

Comments are closed.