⚠️ОСТОРОЖНО СПОЙЛЕРЫ! ⚠️
Не читай код, если ты делаешь задание и весь такой САМОСТОЯТЕЛЬНЫЙ
Накидаю вариантов того, как посчитать продолжительность времени между двумя временными метками.
Вариант 1. Старый добрый Date. 📅
Просто берем и делаем так:
Date d1 = new Date();
waitSeconds(1);
Date d2 = new Date();
long duration = d2.getTime() - d1.getTime();
И получаем продолжительность в миллисекундах между d1 и d2.
Вариант 2. Еще топорнее 🪓
Если не хочется сталкиваться с подкопотными календарными преобразованиями метода getTime у класса Date, можно сделать практически тоже самое, но без класса Date:
long time1 = System.currentTimeMillis();
waitSeconds(1);
long time2 = System.currentTimeMillis();
long duration = time2 - time1;
Вариант 3. Для тех кто устал от Java 7. 🎱
Еще один интуитивный вариант - LocalDateTime. Делаем все тоже самое, заменяя ряд ключевых слов:
LocalDateTime ldt1 = LocalDateTime.now();
waitSeconds(1);
LocalDateTime ldt2 = LocalDateTime.now();
Duration duration = Duration.between(ldt1, ldt2);
И получаем класс Duration c богатым как швейцарский нож API 🪚.
Вариант 4. Для тех кого смущает локаль и часовые пояса 🌐
Абсолютно такой же вариант, как и 3, но локально-независимый: Instant вместо LDT:
Instant instant1 = Instant.now();
waitSeconds(1);
Instant instant2 = Instant.now();
Duration duration = Duration.between(instant1, instant2);
Остается всего 1 вопрос, комрад.
Как сложить несколько Duration (➕) ?
Все просто, кэп, юзай метод plus:
Duration d1 = Duration.ofSeconds(1);
Duration d2 = Duration.ofSeconds(1);
Duration d3 = Duration.ofSeconds(1);
Duration total = d1.plus(d2).plus(d3);
Раздел призыва к действию
Сможешь придумать другой правильный/упоротый вариант? Накидай дичи в комментах 😏