Попытка найти способ подсчета мгновенных совпадений Jodatime с java8 - PullRequest
0 голосов
/ 31 мая 2018

Я сейчас пытаюсь перейти с JodaTime на Java Java.

Большинство в порядке, но одна вещь ускользает от меня.Мне нужно посчитать, сколько человек работает в смену, приходящуюся на «рабочее время».

С JodaTime я использовал класс Instant для выполнения расчета с ревущим успехом:

DateTime in = new DateTime(inTime);
DateTime out = new DateTime(outTime);

Interval officeHours = new Interval(in.withTime(whstart.getHours(), 
whstart.getMinutes(), 0, 0),
in.withTime(whend.getHours(), whend.getMinutes(), 0, 0));

Interval shift = new Interval(in, out);
Interval overlap = officeHours.overlap(shift);

officeHoursSeconds = overlap != null ?
 overlap.toDuration().getStandardSeconds() : 0;

Однако, поскольку класс Interval, по-видимому, отсутствует в java8, я немного растерялся из-за того, как лучше перенести эту логику в API java8.

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

Указатели очень ценятся.

1 Ответ

0 голосов
/ 01 июня 2018

Класс Joda Interval не обогнал Java-8 .Я вижу в основном три способа:

a) Напишите свой собственный интервальный класс (однако поиск исходного кода может помочь)

b) Используйте мою lib Time4J и класс MomentInterval с методом findIntersection (...) , который дает необязательный интервал пересечения.Методы преобразования в Java-8-классы, такие как moment.toTemporalAccessor(), в результате чего java.time.Instant существуют.

c) Используйте lib Threeten-Extra , который имеет класс с тем же именем Interval и его метод пересечение (...) .Здесь вы должны сначала проверить, существует ли пересечение, в противном случае будет выдано исключение.

...