解析只是时间来获得差异
Parsing just time to get difference
我正在努力简化我解析日志和收集时间的生活。我得到一个文件,其中包含所有以这种格式的时间戳开头的日志语句
16:08:39.660
我想把这个字符串变成一个简单的时间,这样我就可以在几秒或几毫秒内得到两者之间的差异。我一直在看这里,建议使用
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。因为时间不对,它给了我负面的差异,这在我给定的背景下是不可能的。怎么转
16:08:39.660
16:08:52.452
相差 12.792
?
你需要 SSS
毫秒,你这个:
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.SSS");
如果您使用 java 8+,更好的方法是使用 java.time.LocalTime
和 java.time.Duration
,这样您就不必编写模式:
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
我正在努力简化我解析日志和收集时间的生活。我得到一个文件,其中包含所有以这种格式的时间戳开头的日志语句
16:08:39.660
我想把这个字符串变成一个简单的时间,这样我就可以在几秒或几毫秒内得到两者之间的差异。我一直在看这里,建议使用
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。因为时间不对,它给了我负面的差异,这在我给定的背景下是不可能的。怎么转
16:08:39.660
16:08:52.452
相差 12.792
?
你需要 SSS
毫秒,你这个:
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.SSS");
如果您使用 java 8+,更好的方法是使用 java.time.LocalTime
和 java.time.Duration
,这样您就不必编写模式:
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