Класс 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 часа в последнее воскресенье октября.
Алгоритм расчета таков: