2020-09-16 02:57发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
你好,在CPI中,我收到一条带有时间戳和持续时间的消息。应该在映射过程中将持续时间添加到时间戳中,以填充结束时间戳。
源消息
2018-07-18T13:00:00 + 02:00 41
目标消息
2018-07-18T13:41:00 + 02:00
我怎么能得到这个?
你好博多
您需要做的是日期和时间算术,这在消息映射中不直接支持。 因此,您的问题就变成在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
没问题,博多。 而且,如果单位始终是分钟,则可以通过删除durationUnit参数并用单行cal.add(...)替换switch语句来简化代码。
最多设置5个标签!
你好博多
您需要做的是日期和时间算术,这在消息映射中不直接支持。 因此,您的问题就变成在Groovy用户定义函数中执行日期和时间算术的问题。 请记住,Java日期和时间类库在Java 8中发生了很大变化,但是在Cloud Integration中,我们仍然使用Java 7。
下面,我在函数中添加了一个刺。 但是,在使用它之前,请注意,我不是Java 7日期和时间类的专家。 它可以根据您的输入进行操作,但是请进行彻底的测试,理想情况下,请知道Java 7日期和时间的人员对其进行检查。
这是功能。 它以日期字符串,持续时间和持续时间单位为参数。
将其连接如下:
此外,请注意,它仅支持以分钟为单位的持续时间。 如果需要其他单元,请相应地更新switch语句。
此致
Morten
没问题,博多。 而且,如果单位始终是分钟,则可以通过删除durationUnit参数并用单行cal.add(...)替换switch语句来简化代码。
此致
Morten
一周热门 更多>