У меня возникла необычная проблема с округлением. Если время «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