Я хотів би надати сучасну відповідь. Інші відповіді були чудовими, коли було задано це питання, але час рухається далі. Сьогодні я рекомендую вам використовувати java.timeсучасний API дати та часу Java .
ZonedDateTime aDateTime = ZonedDateTime.of(2017, 12, 8, 19, 25, 48, 991000000, ZoneId.of("Europe/Sarajevo"));
ZonedDateTime otherDateTime = ZonedDateTime.of(2017, 12, 8, 20, 10, 38, 238000000, ZoneId.of("Europe/Sarajevo"));
long diff = ChronoUnit.SECONDS.between(aDateTime, otherDateTime);
System.out.println("Difference: " + diff + " seconds");
Це друкує:
Difference: 2689 seconds
ChronoUnit.SECONDS.between()працює з двома ZonedDateTimeпредметами або двома OffsetDateTimes, двома LocalDateTimes тощо.
Якщо вам потрібно щось інше, ніж лише секунди, вам слід розглянути можливість використання Durationкласу:
Duration dur = Duration.between(aDateTime, otherDateTime);
System.out.println("Duration: " + dur);
System.out.println("Difference: " + dur.getSeconds() + " seconds");
Це друкує:
Duration: PT44M49.247S
Difference: 2689 seconds
Перший із двох рядків друкує тривалість у форматі ISO 8601, вихід означає тривалість 44 хвилини 49,247 секунди.
Чому java.time?
DateКлас , який використовується в ряді інших відповідей тепер давно застарів. Joda-Time, який також використовується в парі (і, можливо, у цьому питанні), зараз перебуває в режимі обслуговування, серйозні вдосконалення не плануються, і розробники офіційно рекомендують перейти на java.time, також відомий як JSR-310.
Питання: Чи можу я використовувати сучасний API зі своєю версією Java?
Якщо ви використовуєте принаймні Java 6 , ви можете.