首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析只是获得差异的时间

解析只是获得差异的时间
EN

Stack Overflow用户
提问于 2018-08-22 22:36:17
回答 1查看 111关注 0票数 0

我正在尝试简化解析日志和收集时间的生活。我得到一个包含日志语句的文件,这些语句都以以下格式的时间戳开头

代码语言:javascript
运行
复制
16:08:39.660

我想把这个字符串变成一个简单的时间,这样我就可以在几秒或几毫秒内得到两者之间的差值。我一直在看这里,有人建议我使用

代码语言:javascript
运行
复制
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.sss");
Date start = format.parse(startTimeString);
Date end = format.parse(endTimeString);

long difference = end.getTime() - start.getTime();

然而,这给了我完全不同的时间。例如,16:08:39.660给了我4:19。因为时间不对,它给了我负面的差异,这在我给定的上下文中是不可能的。我怎么才能转身

代码语言:javascript
运行
复制
16:08:39.660
16:08:52.452

转化为12.792的差异

EN

Stack Overflow用户

回答已采纳

发布于 2018-08-22 22:41:35

你需要在毫秒内使用SSS,这是:

代码语言:javascript
运行
复制
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.SSS");

如果您正在使用java 8+,一种更好的方法是使用java.time.LocalTimejava.time.Duration,这样您就不必编写模式:

代码语言:javascript
运行
复制
LocalTime start = LocalTime.parse("16:08:39.660");
LocalTime end = LocalTime.parse("16:08:52.452");
Duration duration = Duration.between(start, end);

System.out.println(duration.toMillis()); // 12792
System.out.println(duration.toMillis() / 1000.00); // 12.792
System.out.println(duration.toSeconds()); // 12
票数 9
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51969292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档