Округлите время до отметки 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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