Как рассчитать разницу во времени в секундах?

У меня есть две строки 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)
Другие вопросы по тегам