Программирование на Java
Шрифт:
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 изменилось
Класс 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");
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);
}
}
}
Результатом будет:
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 - временное смещение относительно гринвича;
Имаджика
7. Книга-загадка, книга-мистика
Фантастика:
фэнтези
рейтинг книги
Рассвет русского царства
1. Новая Русь
Документальная литература:
историческая литература
рейтинг книги
Торнан-варвар и жезл Тиамат
Фантастика:
героическая фантастика
рейтинг книги
Народ, да!
Старинная литература:
мифы. легенды. эпос
рейтинг книги
Опыт предпринимателя
Деловая литература:
управление, подбор персонала
рейтинг книги
Серия "Афган. Чечня. Локальные войны". Компиляция. Книги 1-34
Антология военной литературы
Проза:
военная проза
рейтинг книги
А ЕСТЬ А
3. Атлант расправил плечи
Фантастика:
социально-философская фантастика
рейтинг книги
Иномиры (сборник)
Классическая библиотека приключений и научной фантастики
Фантастика:
научная фантастика
рейтинг книги
Я князь. Книга XVIII
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Том 11. Рассказы. Очерки. Публицистика. 1894-1909
Проза:
классическая проза
рейтинг книги
Суть науки Каббала. Том 2
Научно-образовательная:
прочая научная литература
религиоведение
рейтинг книги
Кристалл Альвандера. Корабль Альвандера.Дилогия
Фантастика:
боевая фантастика
рейтинг книги
Масоны
Проза:
русская классическая проза
рейтинг книги
Тевтонский крест
1. Тевтонский крест
Фантастика:
альтернативная история
рейтинг книги