Проверьте, что Instant теперь происходит во время java.time.Period / Duration

Мое намерение состоит в том, чтобы установить условие в истинное только в течение периода.

java.time.* API посмотрел, что мне нужно.

import java.time.Period
import java.time.LocalTime
import java.time.Instant
import java.time.Duration

// java.time.Period
LocalTime start = LocalTime.of(1, 20, 25, 1024);
LocalTime end = LocalTime.of(3, 22, 27, 1544);
Period period = Period.between(startDate, endDate);

// java.time.duration
Instant start = Instant.parse("2017-10-03T10:15:30.00Z")
Instant end = Instant.parse("2019-10-03T10:16:30.00Z")
Duration duration = Duration.between(start, end)

Instant now = Instant.now();

Как это проверить now происходит в течение определенного периода / продолжительности?

Я не вижу прямого API.

Изменить: я нашел способ с java.time.Instant

// now, start and end are defined above
// if now is between start and end 
if (now.isAfter(start) && now.isBefore(end)){
}

2 ответа

Решение

Вы ошибаетесь в том, что Period а также Duration являются.

Они расстояния (вычтите начало от конца). Period с 01/03/2018 по 01/10/2018 точно так же, как в период с 05/04/1990 по 05/11/1990, то же самое для Duration, Так что это ничего не значит спрашивать что-то вроде "3 января 2018 года через 3 месяца?"

Первое: простое решение:

LocalTime start = LocalTime.of(1, 20, 25, 1024);
LocalTime end = LocalTime.of(3, 22, 27, 1544);
LocalTime now = LocalTime.now()

boolean nowIsInTimeWindow = !(now.isBefore(start) || now.isAfter(end));

Тот же шаблон работает с LocalDate и LocalDateTime.

Второе: дополнительные мысли на ваш оригинальный пост:

  1. now никогда не случится "во время" period или же duration, Оба - просто количество времени, например, "два дня" или "пять минут". Они не содержат информацию о начале или конце.

  2. Я бы предложил не смешивать Instant а также LocalDate но использовать LocalTime вместо Instant, Таким образом, вы согласны с часовым поясом: Local... типы по определению не зависят от часового пояса.

Другие вопросы по тегам