Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpDtIns 151 of 322 menu
◀ ▶

Универсальный момент на шкале UTC в Java

Instant хранит точку на шкале времени в UTC: секунды и доли секунды от эпохи 1970-01-01. Календарного дня или часового пояса в самом значении нет, зато один формат подходит для логов и обмена между серверами.

Текущий момент берут статическим now. Из него читают целые секунды epoch и наносекунды:

import java.time.Instant; public class Main { public static void main(String[] args) { Instant tick = Instant.now(); long sec = tick.getEpochSecond(); int nano = tick.getNano(); System.out.println(sec); System.out.println(nano); } }

Конкретную отметку задают через ofEpochSecond или разбор ISO-строки:

import java.time.Instant; public class Main { public static void main(String[] args) { Instant fromSec = Instant.ofEpochSecond(1_700_000_000L); Instant fromText = Instant.parse("2024-01-15T10:00:00Z"); System.out.println(fromSec); System.out.println(fromText); } }

Сравнение идет через isBefore, isAfter или compareTo. Разницу между двумя моментами дает Duration.between:

import java.time.Duration; import java.time.Instant; public class Main { public static void main(String[] args) { Instant start = Instant.parse("2024-06-01T08:00:00Z"); Instant end = Instant.parse("2024-06-01T09:30:00Z"); Duration gap = Duration.between(start, end); System.out.println(gap.toMinutes()); } }

Чтобы показать момент человеку, его переводят в локальное или зонированное время через atZone. Обратный путь из LocalDateTime требует явного пояса, иначе смысл отметки теряется.

Выведите текущий Instant и его epoch в секундах.

Сравните текущий момент с отметкой час назад и выведите true, если текущий позже.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить