Чтение онлайн

на главную - закладки

Жанры

Программирование на Java

Вязовик Н.А.

Шрифт:

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);

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));

}

}

Пример 14.3.

Результатом будет:

Initialy set date: 2002 August 31 23:03:51

Date with day and month changed: 2002 September 30 23:03:51

Пример 14.4.

Метод add(int field,int delta).

Добавляет некоторое смещение к существующей величине поля. В принципе, то же самое можно сделать с помощью set(f, get(f) + delta).

В случае использования метода add следует помнить о двух правилах:

1. Если величина поля изменения выходит за диапазон возможных значений данного поля, то производится деление по модулю данной величины, частное суммируется со следующим по старшинству полем.

2. Если изменяется одно из полей, причем, после изменения младшее по отношению к изменяемому полю принимает некорректное значение, то оно изменяется на то, которое максимально близко к "старому".

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.add(Calendar.SECOND,75);

System.out.println("Current date: " + sdf.format(cal.getTime));

cal.add(Calendar.MONTH,1);

System.out.println("Current date: " + sdf.format(cal.getTime));

}

}

Пример 14.5.

Результатом будет:

Current date: 2002 August 31 19:30:00

Current date: 2002 August 31 19:31:15

Current date: 2002 September 30 19:31:15

Пример 14.6.

Метод roll(int field,int delta).

Добавляет некоторое смещение к существующей величине поля и не производит изменения старших полей. Рассмотрим приведенный ранее пример, но с использованием метода 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 действует так же.

Класс TimeZone

Класс TimeZone предназначен для совместного использования с классами Calendar и DateFormat. Класс абстрактный, поэтому от него порождать объекты нельзя. Вместо этого определен статический метод getDefault, который возвращает экземпляр наследника TimeZone с настройками, взятыми из операционной системы, под управлением которой работает JVM. Для того, чтобы указать произвольные параметры, можно воспользоваться статическим методом getTimeZone(String ID), в качестве параметра которому передается наименование конкретного временного пояса, для которого необходимо получить объект TimeZone. Набор полей, определяющих возможный набор параметров для getTimeZone, нигде явно не описывается. Вместо этого определен статический метод String[] getAvailableIds, который возвращает возможные значения для параметра getTimeZone. Так можно определить набор возможных параметров для конкретного временного пояса (рассчитывается относительно Гринвича) String[] getAvailableIds(int offset).

Рассмотрим пример, в котором на консоль последовательно выводятся:

* временная зона по умолчанию;

* список всех возможных временных зон;

* список временных зон, которые совпадают с текущей временной зоной.

public class Test {

public Test {

}

public static void main(String[] args) {

Test test = new Test;

TimeZone tz = TimeZone.getDefault;

int rawOffset = tz.getRawOffset;

System.out.println("Current TimeZone" + tz.getDisplayName + tz.getID + "\n\n");

// Display all available TimeZones

System.out.println("All Available TimeZones \n");

String[] idArr = tz.getAvailableIDs;

for(int cnt=0;cnt < idArr.length;cnt++) {

tz = TimeZone.getTimeZone(idArr[cnt]);

System.out.println(test.padr(tz.getDisplayName +

tz.getID,64) + " raw offset=" + tz.getRawOffset +

";hour offset=(" + tz.getRawOffset/ (1000 60 60 ) + ")");

}

// Display all available TimeZones same as for Moscow

System.out.println("\n\n TimeZones same as for Moscow \n");

Поделиться:
Популярные книги

Газлайтер. Том 31

Володин Григорий Григорьевич
31. История Телепата
Фантастика:
боевая фантастика
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Газлайтер. Том 31

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV

Мужчина моей судьбы

Ардова Алиса
2. Мужчина не моей мечты
Любовные романы:
любовно-фантастические романы
8.03
рейтинг книги
Мужчина моей судьбы

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Дорогами алхимии

Видум Инди
2. Под знаком Песца
Фантастика:
альтернативная история
аниме
5.00
рейтинг книги
Дорогами алхимии

Сильнейший Столп Империи. Книга 5

Ермоленков Алексей
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Рождественский детектив (сборник рассказов)

Полякова Татьяна Викторовна
Детективы:
прочие детективы
6.00
рейтинг книги
Рождественский детектив (сборник рассказов)

Черный рынок

Вайс Александр
6. Фронтир
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Черный рынок

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Идеальный мир для Лекаря

Сапфир Олег
1. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря

Меткий стрелок. Том II

Вязовский Алексей
2. Меткий стрелок
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Меткий стрелок. Том II

Врубель

Коган Дора Зиновьевна
Жизнь в искусстве
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Врубель

Студент из прошлого тысячелетия

Еслер Андрей
2. Соприкосновение миров
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Студент из прошлого тысячелетия