Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
sdf.format(cal.getTime()));
}
}
Результатом будет:
Initialy set date: 2002 August 31 22:57:47
Date with month changed : 2002 October 01 22:57:47
Date with day changed : 2002 October 30 22:57:47
Как мы видим, в данном примере при изменении месяца день месяца остался неизменным и было унаследовано его предыдущее значение. Но поскольку в сентябре 30 дней, дата автоматически была переведена на 1 октября, и когда было бы установлено 30 число, оно относилось бы уже к октябрю. В следующем примере считывание даты не производится, соответственно, ее вычисление не выполняется до тех пор, пока все поля не Установлены:
public class Test { public Test() { }
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy MMMM dd HH:mm:ss");
Calendar cai = Calendar.getlnstance();
cai.set(Calendar.YEAR,2002);
cai. set(Calendar. MONTH, Calendar. AUGUST);
cal.set(Calendar.DAY_OF_MONTH,31);
System.out.println(" Initialy set date: " +
sdf.format(cal.getTime())); cal.set(Calendar.MONTH,Calendar.SEPTEMBER); cal.set(Calendar.DAY_OF_MONTH,30); System.out.println(" Date with day and month changed :
+ sdf.format(cal.getTime()));
}
}
2002 August 31 23:03:51 2002 September 30 23:03:51 |
Результатом будет: Initialy set date:
Date with day and month changed:
Метод add (int field, int delta).
Добавляет некоторое смещение к существующей величине поля. В принципе, то же самое можно сделать с помощью set(f, get(f) + delta).
В случае использования метода add следует помнить о двух правилах:
1. Если величина поля изменения выходит за диапазон возможных значений данного поля, то производится деление по модулю данной величины, частное суммируется со следующим по старшинству полем.
2. Если изменяется одно из полей, причем, после изменения младшее по отношению к изменяемому полю принимает некорректное значение, то оно изменяется на то, которое максимально близко к "старому".
public class Test {
public Testo { }
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy
MMMMdd HH:mm:ss"); Calendar cal = Calendar.getlnstance();
cal.set(Calendar.YEAR,2002);
cal.set(Calendar.MONTH.Calendar.AUGUST);
cal.set(Calendar.DAY_OF_MONTH,31);