Instant с точностью до наносекунд
Получайте временные метки с точностью до микросекунд или наносекунд.
Сравнение кода
✕ Java 8
// Millisecond precision only
long millis =
System.currentTimeMillis();
// 1708012345678
✓ Java 9+
// Microsecond/nanosecond precision Instant now = Instant.now(); // 2025-02-15T20:12:25.678901234Z long nanos = now.getNano();
Заметили проблему в этом коде? Сообщите нам.
Почему современный подход лучше
Высокая точность
Временные метки с точностью до микросекунд/наносекунд вместо миллисекунд.
Типобезопасность
Instant несёт в себе свою точность — никаких неоднозначных значений long.
Основан на UTC
Instant всегда в UTC — никакой путаницы с часовыми поясами.
Старый подход
Миллисекунды
Современный подход
Наносекунды
Начиная с JDK
9
Сложность
Средний
Поддержка JDK
Instant с точностью до наносекунд
Доступно
Широко доступен начиная с JDK 9 (сентябрь 2017)
Как это работает
Java 9 улучшила разрешение часов, и теперь Instant.now() на большинстве платформ обеспечивает точность до микросекунд (на некоторых — до наносекунд). Устаревший currentTimeMillis() предоставляет точность только до миллисекунд.
Связанная документация
Доказательство