2014-10-22 2 views
0

Надеется, что вы можете помочь :-)время JAVA округление вопрос

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

Если время «7:35 AM» время должно быть «8:00 AM» - округляется до 30 минут идти вперед ...

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

Любые идеи будут оценены.

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

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); 
} 
+1

У вас есть какой-либо код или вы просто просите идеи? если это так просто, если бы это было легко сделать – dave

+0

Будет ли выставлять пример выше ... –

ответ

0

Я предлагаю вам использовать библиотеку времени Joda. В дополнение к хелперам, которые он предлагает, вы должны найти here snipplet с кодом, который делает почти то, что вам нужно.

+0

Спасибо за ответ, но мой метод выше делает то же самое. Мне нужно это, чтобы округлить вперед ТОЛЬКО ... –

+0

О, извините. Я пока не видел образец, который вы опубликовали. Я бы посоветовал добавить 30 минут в час, если millisSinceHour меньше 30 * 60000 –

+0

И добавьте 60 минут, если он больше. –

Смежные вопросы