Сегодня мы научимся находить разницу между 2 датами. Эта статья является продолжением раздела Java для начинающих. В этой статье мы научимся определять разницу между двумя датами в Java.
Для этого давайте вспомним как происходит преобразование даты из миллисекунд в секунды/минуты/часы/дни:
- 1000 миллисекунд = 1 секунда
- 60 000 миллисекунд = 60 секунд = 1 минута
- 3 600 секунд = 60 минут = 1 час
- 24 часа = 1 440 минут = 1 день
Теперь просто перенесем преобразования в пример на Java.
Как найти разницу между датами в Java?
На листинге ниже мы создаем 2 объекта Date
в определенном формате и получаем значения каждой даты в миллисекундах с помощью метода getTime()
и дальше проводим преобразования, представленные выше:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
package ua.com.prologistic; import java.text.SimpleDateFormat; import java.util.Date; public class DifferenceBtwTwoDates { public static void main(String[] args) { try { // создаем формат, в котором будем парсить дату SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); Date date1 = dateFormat.parse("15.05.2018"); Date date2 = dateFormat.parse("17.05.2018"); System.out.println("Первая дата: " + date1); System.out.println("Вторая дата: " + date2); long milliseconds = date2.getTime() - date1.getTime(); System.out.println("\nРазница между датами в миллисекундах: " + milliseconds); // 1000 миллисекунд = 1 секунда int seconds = (int) (milliseconds / (1000)); System.out.println("Разница между датами в секундах: " + seconds); // 60 000 миллисекунд = 60 секунд = 1 минута int minutes = (int) (milliseconds / (60 * 1000)); System.out.println("Разница между датами в минутах: " + minutes); // 3 600 секунд = 60 минут = 1 час int hours = (int) (milliseconds / (60 * 60 * 1000)); System.out.println("Разница между датами в часах: " + hours); // 24 часа = 1 440 минут = 1 день int days = (int) (milliseconds / (24 * 60 * 60 * 1000)); System.out.println("Разница между датами в днях: " + days); } catch (Exception e) { e.printStackTrace(); } } } |
Теперь запустим программу и смотрим в консоль:
1 2 3 4 5 6 7 8 |
Первая дата: Tue May 15 00:00:00 EEST 2018 Вторая дата: Thu May 17 00:00:00 EEST 2018 Разница между датами в миллисекундах: 172800000 Разница между датами в секундах: 172800 Разница между датами в минутах: 2880 Разница между датами в часах: 48 Разница между датами в днях: 2 |
Обратите внимание, что в листинге мы явно отнимаем меньшую дату от большей. Если наоборот отнять большую дату от меньшей, то в результате получим такой же результат, но со знаком минус.
Подписывайтесь на новые статьи по Java и Android.