Добавляет некоторое смещение к существующей величине поля и не производит изменения старших полей. Рассмотрим приведенный ранее пример, но с использованием метода roll.
public class Test {
public Test() { } public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMM dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR,2002); cal.set(Calendar.MONTH,Calendar.AUGUST); cal.set(Calendar.DAY_OF_MONTH,31); cal.set(Calendar.HOUR_OF_DAY,19); cal.set(Calendar.MINUTE,30); cal.set(Calendar.SECOND,00); System.out.println("Current date: " + sdf.format(cal.getTime())); cal.roll(Calendar.SECOND,75); System.out.println("Rule 1: " + sdf.format(cal.getTime())); cal.roll(Calendar.MONTH,1); System.out.println("Rule 2: " + sdf.format(cal.getTime())); } }
Пример 14.7.
Результатом будет:
Current date: 2002 August 31 19:30:00 Rule 1: 2002 August 31 19:30:15 Rule 2: 2002 September 30 19:30:15
Пример 14.8.
Как видно из результатов работы приведенного выше кода, действие правила 1 изменилось по сравнению с методом add, а правило 2 действует так же.