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

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

Жанры

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

Вязовик Н.А.

Шрифт:

idArr = tz.getAvailableIDs(rawOffset);

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

}

}

String padr(String str,int len) {

if(len - str.length > 0) {

char[] buf = new char[len - str.length];

Arrays.fill(buf,' ');

return str + new String(buf);

} else {

return str.substring(0,len);

}

}

}

Пример 14.9.

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

Current TimeZone Moscow Standard TimeEurope/Moscow

TimeZones same as for Moscow

Eastern African TimeAfrica/Addis_Aba raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Asmera raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Dar_es_Sa raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Djibouti raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Kampala raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Khartoum raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Mogadishu raw offset=10800000;hour offset=(3)

Eastern African TimeAfrica/Nairobi raw offset=10800000;hour offset=(3)

Arabia Standard TimeAsia/Aden raw offset=10800000;hour offset=(3)

Arabia Standard TimeAsia/Baghdad raw offset=10800000;hour offset=(3)

Arabia Standard TimeAsia/Bahrain raw offset=10800000;hour offset=(3)

Arabia Standard TimeAsia/Kuwait raw offset=10800000;hour offset=(3)

Arabia Standard TimeAsia/Qatar raw offset=10800000;hour offset=(3)

Arabia Standard TimeAsia/Riyadh raw offset=10800000;hour offset=(3)

Eastern African TimeEAT raw offset=10800000;hour offset=(3)

Moscow Standard TimeEurope/Moscow raw offset=10800000;hour offset=(3)

Eastern African TimeIndian/Antananar raw offset=10800000;hour offset=(3)

Eastern African TimeIndian/Comoro raw offset=10800000;hour offset=(3)

Eastern African TimeIndian/Mayotte raw offset=10800000;hour offset=(3)

Пример 14.10.

Класс SimpleTimeZone

Класс SimpleTimeZone, как потомок TimeZone, реализует его абстрактные методы и предназначен для применения в настройках, использующих Григорианский календарь. В большинстве случаев нет необходимости создавать экземпляр данного класса с помощью конструктора. Вместо этого лучше использовать статические методы, которые возвращают тип TimeZone, рассмотренные в предыдущем параграфе. Единственная, пожалуй, причина для использования конструктора - необходимость задания нестандартных правил перехода на зимнее и летнее время.

В классе SimpleTimeZone определено три конструктора. Рассмотрим наиболее полный с точки зрения функциональности вариант, который, помимо временной зоны, задает летнее и зимнее время.

public SimpleTimeZone(int rawOffset,

String ID,

int startMonth,

int startDay,

int startDayOfWeek,

int startTime,

int endMonth,

int endDay,

int endDayOfWeek,

int endTime)

rawOffset - временное смещение относительно гринвича;

ID - идентификатор временной зоны (см. пред.параграф);

startMonth - месяц перехода на летнее время;

startDay - день месяца перехода на летнее время*;

startDayOfWeek - день недели перехода на летнее время*;

startTime - время перехода на летнее время (указывается в миллисекундах);

endMonth - месяц окончания действия летнего времени;

endDay - день окончания действия летнего времени*;

endDayOfWeek - день недели окончания действия летнего времени*;

endTime - время окончания действия летнего времени (указывается в миллисекундах).

Перевод часов на зимний и летний вариант исчисления времени определяется специальным правительственным указом. Обычно переход на летнее время происходит в 2 часа в последнее воскресенье марта, а переход на зимнее время - в 3 часа в последнее воскресенье октября.

Алгоритм расчета таков:

* если startDay=1 и установлен день недели, то будет вычисляться первый день недели startDayOfWeek месяца startMonth (например, первое воскресенье);

* если startDay=-1 и установлен день недели, то будет вычисляться последний день недели startDayOfWeek месяца startMonth (например, последнее воскресенье);

* если день недели startDayOfWeek установлен в 0, то будет вычисляться число startDay конкретного месяца startMonth ;

* для того, чтобы установить день недели после конкретного числа, специфицируется отрицательное значение дня недели. Например, чтобы указать первый понедельник после 23 февраля, используется вот такой набор: startDayOfWeek=-MONDAY, startMonth=FEBRUARY, startDay=23

* для того, чтобы указать последний день недели перед каким-либо числом, указывается отрицательное значение этого числа и отрицательное значение дня недели. Например, для того, чтобы указать последнюю субботу перед 23 февраля, необходимо задать такой набор параметров: startDayOfWeek=-SATURDAY, startMonth=FEBRUARY, startDay=-23;

* все вышеперечисленное относится также и к окончанию действия летнего времени.

Рассмотрим пример получения текущей временной зоны с заданием перехода на зимнее и летнее время для России по умолчанию.

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

Виконт. Книга 2. Обретение силы

Юллем Евгений
2. Псевдоним `Испанец`
Фантастика:
боевая фантастика
попаданцы
рпг
7.10
рейтинг книги
Виконт. Книга 2. Обретение силы

Древесный маг Орловского княжества 6

Павлов Игорь Васильевич
6. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 6

Я уже царь. Книга XXIX

Дрейк Сириус
29. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я уже царь. Книга XXIX

Некромант

Щепетнов Евгений Владимирович
4. Петр Синельников
Фантастика:
боевая фантастика
6.20
рейтинг книги
Некромант

Мы друг друга не выбирали

Кистяева Марина
1. Мы выбираем...
Любовные романы:
остросюжетные любовные романы
прочие любовные романы
современные любовные романы
5.00
рейтинг книги
Мы друг друга не выбирали

Вагант

Листратов Валерий
6. Ушедший Род
Фантастика:
боевая фантастика
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Вагант

Запечатанный во тьме. Том 3

NikL
3. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 3

Везунчик. Проводник

Бубела Олег Николаевич
3. Везунчик
Фантастика:
фэнтези
6.62
рейтинг книги
Везунчик. Проводник

Изгой Проклятого Клана. Том 5

Пламенев Владимир
5. Изгой
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Изгой Проклятого Клана. Том 5

Личный аптекарь императора. Том 2

Карелин Сергей Витальевич
2. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Личный аптекарь императора. Том 2

Имперец. Том 3

Романов Михаил Яковлевич
2. Имперец
Фантастика:
боевая фантастика
попаданцы
альтернативная история
7.50
рейтинг книги
Имперец. Том 3

Волчье солнышко (Сборник)

Бушков Александр Александрович
Фантастика:
научная фантастика
5.25
рейтинг книги
Волчье солнышко (Сборник)

Источник

Билик Дмитрий Александрович
11. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
7.00
рейтинг книги
Источник

Неудержимый. Книга XXII

Боярский Андрей
22. Неудержимый
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXII