I use some kind of stopwatch in my project and I have
start time ex: 18:40:10 h
stop time ex: 19:05:15 h
I need a result from those two
I am providing the modern answer.
DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("H:mm:ss 'h'");
String startTimeString = "18:40:10 h";
String stopTimeString = "19:05:15 h";
LocalTime startTime = LocalTime.parse(startTimeString, timeFormatter);
LocalTime stopTime = LocalTime.parse(stopTimeString, timeFormatter);
if (stopTime.isBefore(startTime)) {
System.out.println("Stop time must not be before start time");
} else {
Duration difference = Duration.between(startTime, stopTime);
long hours = difference.toHours();
difference = difference.minusHours(hours);
long minutes = difference.toMinutes();
difference = difference.minusMinutes(minutes);
long seconds = difference.getSeconds();
System.out.format("%d hours %d minutes %d seconds%n", hours, minutes, seconds);
}
Output from this example is:
0 hours 25 minutes 5 seconds
The other answers were good answers in 2010. Today avoid the classes DateFormat, SimpleDateFormat and Date. java.time, the modern Java date and time API, is so much nicer to work with.
No, using java.time works nicely on older and newer Android devices. It just requires at least Java 6.
org.threeten.bp with subpackages.java.time was first described.java.time to Java 6 and 7 (ThreeTen for JSR-310).