我以“dd-MM-yyyy hh:mm:ss.SSSSSS”格式获取时间戳记值,例如:“2016-05-22 01:02:36.909093”。我需要计算上述相同格式的两个值之间的差异。任何人都可以帮助克服这一点。如何找到mule中两个时间戳值之间的差异?
0
A
回答
0
您可以使用java,并使用乔达日期库。
1
我不知道穆勒,但在Java方面很容易。
java.time
假设你输入的字符串是UTC,解析它作为一个Instant
由T
替换中间的那个空间之后。
String input = "2016-05-22 01:02:36.909093".replace(" " , "T");
Instant instant = Instant.parse(input);
Instant now = Instant.now();
Duration duration = Duration.between(instant , now);
你可以问Duration
其长度的时间总数或总天数的或总分钟数等
奇怪的是,在Java 8中Duration
类是缺少询问方便的方法诸如小时或分钟的部分。在Java 9中,缺少的是通过“getPart”方法来弥补的。
Duration
类可以解析和生成标准ISO 8601格式的字符串。例如,一小时半是PT1H30M
。
1
我们需要去一个常规检查与下面的代码,可以帮助你
import java.util.Calendar;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
import java.util.Set;
import java.util.Date;
import java.text.SimpleDateFormat;
format = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
if(flowVars.lastRunDateTime==null||flowVars.lastRunDateTime=='0')
flowVars.lastRunDateTime=flowVars.currentRunDateTime;
log.info("last run date time"+flowVars.lastRunDateTime);
log.info("current time"+flowVars.currentRunDateTime);
date1=flowVars.lastRunDateTime;
date2=flowVars.currentRunDateTime;
d1 = null;
d2 = null;
d3 = null;
d1 = format.parse(date1);
d2 = format.parse(date2);
diff=d2.getTime()-d1.getTime();
t=diff/60000;
log.info(t + " total Minutes ");
if(t>30)
{
log.info("initial Time"+d1);
calendar = Calendar.getInstance();
calendar.setTime(d1);
calendar.add(Calendar.MINUTE, ${time.gap});
d3= calendar.getTime();
log.info("Final Time"+d3);
flowVars.lastRunDateTime=format.format(d1);
flowVars.currentRunDateTime=format.format(d3);
log.info("last run date time"+flowVars.lastRunDateTime);
log.info("current time"+flowVars.currentRunDateTime);
}
flowVars.put('IM_START_DATE', flowVars.lastRunDateTime.substring(0,10));
flowVars.put('IM_START_TIME' , flowVars.lastRunDateTime.substring(10,16) + '01');
flowVars.put('IM_END_DATE' , flowVars.currentRunDateTime.substring(0,10));
flowVars.put('IM_END_TIME' , flowVars.currentRunDateTime.substring(10,16) +'00');
1
您可以直接生成使用dataweave一段时间。如果您的有效载荷是:
{
"date1":"21-07-2016 10:00:00.000000",
"date2":"22-07-2016 11:11:11.111111"
}
那么这dataweave给您的时期:
%dw 1.0
%output application/json
%type fdate = :localdatetime {format: "dd-MM-yyyy HH:mm:ss.SSSSSS"}
---
{
period:
payload.date1 as :fdate - payload.date2 as :fdate
}
这看起来像这样的输出:
{
"period": "PT25H11M11.111111S"
}
很明显,你可以再重构为不同的格式或输出目标。
相关问题
- 1. 如何找到两个时间戳之间的时间差?
- 2. 添加或找到两个时间戳之间的差异
- 3. 找到两个值之间的差异?
- 4. 时间戳。两次之间的差异
- 5. 寻找两个时间戳与日期之间的差异
- 6. 查找两个时间戳之间的差异
- 7. 如何获得两个时间戳之间的差异
- 8. 两个SQL时间戳值之间的差异
- 9. 选择两行中两个unix时间戳之间的差异
- 10. 2个时间戳之间的差异
- 11. 如何找到java中的时代戳记之间的差异
- 12. 在javascript中找到两个日期时间之间的差异
- 13. 当前时间戳与之前时间戳之间的差异
- 14. 如何找到字符串中两个时间值的差异?
- 15. 如何计算PERL中2个时间戳之间的差异
- 16. 计算两个时间戳对象之间的差异java
- 17. 两个时间戳之间的MySQL差异
- 18. Postgres:找到时间戳行之间的最小差异
- 19. 如何找到R中两个事件之间的时间差?
- 20. 在两个时间戳中找到差异
- 21. Php找到两个时间戳之间的时间间隔
- 22. 2时间戳之间的差异 - PHP
- 23. 如何获取两个日期时间值之间的差异?
- 24. 查询找到两个时间数据之间的差异
- 25. 找到两个日期时间之间的微小差异
- 26. PHP找到两个日期时间之间的差异
- 27. 如何计算php中的两个时间戳记之间的分钟差异
- 28. 找到时间之间的差异c
- 29. 如何获得天数中两个时间戳之间的差异?
- 30. 如何呈现JavaScript中两个时间戳之间的上下文差异?