Округлите время до отметки 30 или 60 минут (половина текущего часа или следующий час) на языке Java.JAVA

Программисты JAVA общаются здесь
Anonymous
Округлите время до отметки 30 или 60 минут (половина текущего часа или следующий час) на языке Java.

Сообщение Anonymous »

Надеюсь, вы сможете помочь :-)

Боюсь с необычной проблемой округления...

Если время «7:35», время должно быть «8:00» — округляется до ближайших 30 минут вперед...

Если время «7:20», время должно быть «7:30»

Будем признательны за любые идеи.

У меня есть это, но оно округляется вперед и назад. Нужно только идти вперед:

private DateTime roundDate(final DateTime dateTime, final int minutes) {
if (minutes < 1 || 60 % minutes != 0)
{
throw new IllegalArgumentException("minutes must be a factor of 60");
}

final DateTime hour = dateTime.hourOfDay().roundFloorCopy();
final long millisSinceHour = new Duration(hour, dateTime).getMillis();
final int roundedMinutes = ((int) Math.round(millisSinceHour / 60000.0 / minutes)) * minutes;

System.out.println(hour.plusMinutes(roundedMinutes));

return hour.plusMinutes(roundedMinutes);
}


Подробнее здесь: https://stackoverflow.com/questions/265 ... -or-at-the

Вернуться в «JAVA»