martes, 25 de julio de 2017

Suma y Resta con Fecha y Hora - BPEL 12c

    A menudo suele acudirse a la necesidad de sumar y restar periodos de tiempo (minutos, dias, semanas, etc.) sobre una fecha dada en un proceso BPEL. Lo que se debe tener en cuenta es que en SOA se aplican reglas especificas sobre las funciones que permiten realizar estas operaciones.


    A continuación se lista una tabla con dichas reglas:

Tabla de Referencia

Ejemplo
Expresión
Un día
P1D
Una semana
P7D
Un Mes
P1M
Un año
P1Y
Un minuto
PT1M
Un segundo
PT1S
Un año, un día, una hora y un segundo
P1Y1DT1H1S




Funciones


xp20:add-dayTimeDuration-to-dateTime()

Esta función devuelve un nuevo valor dateTime que añade un periodo de tiempo determinado.
Si el valor del periodo de tiempo es negativo, el valor resultante precede a dateTime.

xp20:add-dayTimeDuration-from-dateTime(dateTime como string, periodo como string)

• dateTime como string - El dateTime al que la función añade el periodo de tiempo, en formato string.
• periodo como string - El periodo de tiempo para añadir a la fecha, o restar si la duración es negativa, en formato string.

Ejemplo de uso:
xp20:add-dayTimeDuration-to-dateTime(xp20:current-date(), 'P1D')




xp20:subtract-dayTimeDuration-from-dateTime()

Esta función devuelve un nuevo valor dateTime después de restar un periodo de tiempo.
Si el valor del periodo de tiempo es negativo, el valor
dateTime resultante sigue al valor dateTime ingresado.

xp20:subtract-dayTimeDuration-from-dateTime(dateTime como string, periodo como string)

• dateTime como string - El dateTime desde el cual la función resta el periodo de tiempo, en formato string.
• periodo como string - El periodo de tiempo para restar al dateTime, o añadir si la duración es negativa, en formato string.

Ejemplo de uso:
xp20:subtract-dayTimeDuration-from-dateTime(xp20:current-date(), 'P1D')




Cualquier comentario, duda o sugerencia puede tratarse libremente en los comentarios del presente articulo.

2 comentarios:

  1. Pablo buena tarde! Una pregunta, alguna ocasión te ha sucedido que deseas restar 1 hora a una fecha que exactamente coincide con el cambio de horario? Y que BPEL no te reste la hora ya que suele coincidir que es la misma hora al atrasar el reloj pero te cambia el GMT, como podéis manejar esto? De antemano gracias, saludos!

    ResponderEliminar
    Respuestas
    1. Hola que tal, estimo que en este escenario primero se debería normalizar el datos a una zona horaria (suponte, llevar el dato a GMT 0) y recién ahi efectuar la resta. Depende de en que GMT necesites el resultado. Espero haberte ayudado. Podrias investigar la funcion: adjust-dateTime-to-timezone()

      Eliminar