CPI映射将分钟添加到时间戳

2020-09-16 02:57发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,
在CPI中,我收到一条带有时间戳和持续时间的消息。
应该在映射过程中将持续时间添加到时间戳中,以填充结束时间戳。

源消息

2018-07-18T13:00:00 + 02:00 41

目标消息

2018-07-18T13:41:00 + 02:00


我怎么能得到这个?

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,
在CPI中,我收到一条带有时间戳和持续时间的消息。
应该在映射过程中将持续时间添加到时间戳中,以填充结束时间戳。

源消息

2018-07-18T13:00:00 + 02:00 41

目标消息

2018-07-18T13:41:00 + 02:00


我怎么能得到这个?

付费偷看设置
发送
2条回答
shere_lin
1楼 · 2020-09-16 03:23.采纳回答

你好博多

您需要做的是日期和时间算术,这在消息映射中不直接支持。 因此,您的问题就变成在Groovy用户定义函数中执行日期和时间算术的问题。 请记住,Java日期和时间类库在Java 8中发生了很大变化,但是在Cloud Integration中,我们仍然使用Java 7。

下面,我在函数中添加了一个刺。 但是,在使用它之前,请注意,我不是Java 7日期和时间类的专家。 它可以根据您的输入进行操作,但是请进行彻底的测试,理想情况下,请知道Java 7日期和时间的人员对其进行检查。

这是功能。 它以日期字符串,持续时间和持续时间单位为参数。

导入java.text.SimpleDateFormat

 def String addDuration(String date,String duration,String durationUnit){
    //解析日期字符串
     def f = new SimpleDateFormat(" yyyy-MM-dd'T'HH:mm:ssXXX")
     def d = f.parse(date)
    //添加指定的持续时间
     def cal = Calendar.getInstance()
     cal.setTime(d)
     开关(durationUnit){
         案例" MIN":
             cal.add(Calendar.MINUTE,持续时间为Integer)
             打破
         默认:
            //如果达到默认大小写,则持续时间单位未知。
            //这可能是一个错误。
             打破
     }
    //设置时区并格式化输出
     f.setTimeZone(TimeZone.getTimeZone('GMT'+ date [-6 ..- 1]))
     返回f.format(cal.getTime())
 } 

将其连接如下:

此外,请注意,它仅支持以分钟为单位的持续时间。 如果需要其他单元,请相应地更新switch语句。

此致

Morten

歪着头看世界
2楼-- · 2020-09-16 03:16

没问题,博多。 而且,如果单位始终是分钟,则可以通过删除durationUnit参数并用单行cal.add(...)替换switch语句来简化代码。

此致

Morten

一周热门 更多>