Добавить в корзинуПозвонить
Найти в Дзене
Java

☕ Java совет: сравнение времени без ловушек точности

Иногда при сравнении времени в Java проверки равенства могут неожиданно падать, потому что значения отличаются на миллисекунды или наносекунды. Например: Instant a = Instant.parse("2025-10-01T10:42:11Z"); Instant b = Instant.parse("2025-10-01T10:42:44Z"); Если сравнивать напрямую, они разные. Но если вам важна точность до минуты, это можно легко исправить. Используйте Instant.truncatedTo(): boolean sameMinute = a.truncatedTo(ChronoUnit.MINUTES) .equals(b.truncatedTo(ChronoUnit.MINUTES)); System.out.println(sameMinute); // true Метод truncatedTo() обрезает время до нужной точности: • ChronoUnit.MINUTES • ChronoUnit.HOURS • ChronoUnit.DAYS Это помогает избежать проблем, когда значения отличаются только в миллисекундах или наносекундах. Полезно для: • логов • временных окон • аналитики • дедупликации событий Маленький приём — но часто спасает от неочевидных багов в time-логике. #Java #JavaDev #Backend #Programming

☕ Java совет: сравнение времени без ловушек точности

Иногда при сравнении времени в Java проверки равенства могут неожиданно падать, потому что значения отличаются на миллисекунды или наносекунды.

Например:

Instant a = Instant.parse("2025-10-01T10:42:11Z");

Instant b = Instant.parse("2025-10-01T10:42:44Z");

Если сравнивать напрямую, они разные.

Но если вам важна точность до минуты, это можно легко исправить.

Используйте Instant.truncatedTo():

boolean sameMinute =

a.truncatedTo(ChronoUnit.MINUTES)

.equals(b.truncatedTo(ChronoUnit.MINUTES));

System.out.println(sameMinute); // true

Метод truncatedTo() обрезает время до нужной точности:

• ChronoUnit.MINUTES

• ChronoUnit.HOURS

• ChronoUnit.DAYS

Это помогает избежать проблем, когда значения отличаются только в миллисекундах или наносекундах.

Полезно для:

• логов

• временных окон

• аналитики

• дедупликации событий

Маленький приём —

но часто спасает от неочевидных багов в time-логике.

#Java #JavaDev #Backend #Programming