La manera de hacerlo sin bibliotecas 3 ª parte (puede ser no tan elegante y no tan flexible, sin embargo): añadir la mitad de un campo (por un redondeo por minuto - 30 segundos) y establecer este campo y los inferiores a cero.
Calendar calendar = ... // assume you already have it with a specified Date value
// 'add' cause changing larger fields if necessary
calendar.add(Calendar.SECOND, 30);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Si el valor actual es inferior a 30 segundos, el valor de un minuto no cambiará en 'agregar'. De lo contrario, aumentará en 1. En cualquier caso, los segundos y los valores más bajos se ponen a cero. Entonces tenemos un redondeo.
JodaTime (http://joda-time.sourceforge.net/) también esto puede ser útil:? http://stackoverflow.com/a/266846/579580 – aviad
JodaTime no proporciona esta función . Usar Calendar para extraer los valores del campo y luego restarlos/agregarlos era demasiado feo. – darrenmc