Как рассчитать разницу во времени в секундах?
У меня есть две строки Datetime:
val formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd-hh-mm-ss")
val startTime = formatter format ZonedDateTime.now(ZoneId.of("UTC"))
//...
val endTime = formatter format ZonedDateTime.now(ZoneId.of("UTC"))
Как я могу рассчитать разницу в секундах между endTime
а также startTime
?
1 ответ
Решение
Использовать java.time.temporal.ChronoUnit
:
// difference in seconds
ChronoUnit.SECONDS.between(startTime, endTime)
Но startTime
а также endTime
должно быть ZonedDateTime
объекты, а не строки.
Просто имейте в виду, что результат округляется до минимума - если реальная разница, скажем, 1999 миллисекунд, приведенный выше код вернет 1 (потому что 1999 миллисекунд недостаточно, чтобы сделать 2 секунды).
Еще одна деталь в том, что вы можете использовать ZoneOffset.UTC
вместо ZoneId.of("UTC")
в результате то же самое.
На самом деле, если вы работаете с UTC, почему бы не использовать Instant.now()
вместо? between
Метод выше работает так же, как Instant
"S:
val start = Instant.now()
val end = Instant.now()
val diffInSecs = ChronoUnit.SECONDS.between(start, end)