Временные зоны и GMT

По международному соглашению земной шар разделен на временные зоны, или часовые пояса. Это позволяет жителям каждой зоны считать, что солнце находится в зените при­мерно в полдень. Текущее время зоны называется локальным временем. Именно оно и ус­танавливается на наших обычных часах и часах компьютера.

Международным соглашением введена универсальная точка отсчета для времени. Этой точ­кой является “среднее” время по Гринвичу (Greenwich Mean Time или GMT), относительно которого локальное время в любой временной зоне вычисляется посредством добавления или вычитания определенной поправки. Сейчас для GMT существует еще одна аббревиатура — UTC. Она не имеет точной расшифровки ни на одном языка мира, но ее английская версия звучит так — Coordinated Universal Time (Всеобщее скоординированное время).

В операционной системе Windows при установке времени вы также задаете временную зо­ну. Таким образом, при необходимости, в любой момент может быть вычислено текущее время UTC.

Перечисленные выше методы объекта Date работают с локальным временем. Однако существует масса случаев, когда может понадобиться работать в сценарии со временем UTC. Например, пользователь вашего Web-pecypca заполняет форму заказа. А вам нужно, чтобы при ее отправке вместе с данными были отправлены также дата и время ее заполнения. Но при этом вас скорее всего будет интересовать время отправки формы не по времени этого пользователя, а по вашему времени.

Наиболее простой способ вычисления времени UTC состоит в использовании метода getTimezoneOffset ( ), возвращающего величину смещения часового пояса в минутах шя локального времени (установленного на компьютере пользователя) относительно времени по Гринвичу (для Netscape Navigator) или универсального времени (для Internet Explorer). Например, после выполнения следующих инструкций локальное время в объекте today будет переведено во время UTC:

var today = new Date()

var offset = today.gwtTimezoneOffset()

today.setMinutes(today.getMinutes ( ) +offset)

Также существуют и специальные методы объекта Date для работы со временем UTC. Они имеют такие же названия, как и описанные выше, только между приставкой get (или set) и остальной частью имени метода должна быть вставлена аббревиатура UTC. Например, метод getUTCMonth () позволяет определить месяц UTC, а метод setUTCMinutes ( ) — установить минуты UTC. При этом, конечно, в одном объекте Date не содержится двух отдельных дат, т.е. все изменения, внесенные в локальное время, отразятся на времени UTC и наоборот.

Объект Data имеет следующие методы для извлечения и установки элементов даты и времени для универсального времени:

  • getUTCDate —возвращает день месяца (число) для выбранной даты по универсальному времени;
  • getUTCDay— возвращает день недели для выбранной даты по универсальному времени;
  • getUTCFullYear —возвращает год для выбранной даты по универсальному времени;
  • getUTCHours —возвращает часы для выбранной даты по универсальному времени;
  • getUTCMilliseconds—возвращает миллисекунды для выбранной даты по универсальному времени;
  • getUTCMinutes— возвращает минуты для выбранной даты по универсальному времени;
  • getUTCMonth —возвращает месяц для выбранной даты по универсальному времени;
  • getUTCSeconds —возвращает секунды для выбранной даты по универсальному времени;
  • setUTCDate —устанавливает день месяца для выбранной даты по универсально­му времени;
  • setUTCFullYear —задает полный год для выбранной даты по универсальному времени;
  • setUTCHours —устанавливает часы для выбранной даты по универсальному времени;
  • setUTCMilliseconds —определяет миллисекунды для выбранной даты по уни­версальному времени;
  • setUTCMinutes —устанавливает минуты для выбранной даты по универсально­му времени;
  • setUTCMonth —задает месяц для выбранной даты по универсальному времени;
  • setUTCSeconds —определяет секунды для выбранной даты по универсальному времени;
  • UTC —возвращает количество миллисекунд в объекте Date с 00:00:00 1 января 1970 года.

Все методы, касающиеся универсального времени, появились в версии JavaScript 1.3. Методы для работы с универсальным временем полностью аналогичны методам для ра­боты с локальным временем. Исключение составляет метод UTC.