Проверьте, что Instant теперь происходит во время java.time.Period / Duration - PullRequest
0 голосов
/ 31 мая 2018

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

API java.time.* выглядело то, что мне нужно.

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 ]

0 голосов
/ 31 мая 2018

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

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

0 голосов
/ 31 мая 2018

Во-первых: простое решение:

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... по определению не зависят от часового пояса.

...