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




Класс 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;
  • все вышеперечисленное относится также и к окончанию действия летнего времени.




Содержание  Назад  Вперед