Класс Date

В принципе, зная машинное время в миллисекундах и номер текущей временной зоны, можно абсолютно точно вычислить, к какому году, месяцу, дню, часу, минуте и секунде относится данный момент. Наоборот, точно зная все характеристики момента времени, его довольно несложно перевести в машинное представление, более удобное при использовании в алгоритмах. Очень просто, зная глобальное время, пересчитать его в локальное (и наоборот).

Все перечисленные операции могут быть реализованы всего парой строк несложного кода. Однако
еще лучше использовать для подобного рода расчетов методы специального предопределенного класса Date, доверившись опыту программистов Macromedia. Если же вам интересно, по каким формулам машинное время пересчитываете я в обычные единицы измерения, то обратитесь к стандарту ЕСМА-262, где данный вопрос рассматривается чрезвычайно подробно.
Создание объектов класса Date
Объект класса Date в ActionScript — это материальное воплощение некоторого момента времени. На уровне реализации такому объекту ставится в соответствие количество миллисекунд, прошедших с I января 1970 года по гринвичскому времени до этого момента (т. е. значение момента, выраженное в машинном времени).


Методы класса Date() предназначены как для преобразования данного значения в более привычные единицы, так и для приведения времени из стандартной для нас формы к машинной.

Объекты класса Date() создаются точно так же, как объекты любого другого класса, — при помощи функции-конструктора и оператора new. Имеется несколько форм использования конструктора Date(). Если в объекте необходимо зафиксировать текущее время, то конструктор применяется без параметров:

var time:Date=new Date();
trace(time); // Выводит "Mon Dec 22 07:46:16 GMT+0300 2003"

Если объект класса Date должен быть создан для хранения информации о каком-то моменте из прошлого или будущего, то ему должны быть переданы параметры, адресующие этот момент при помощи стандартных единиц измерения. При этом используется следующий синтаксис:

var date:Date=new Date(year, month, date, hour, minute, second, millisecond}; Здесь

• year — год, к которому относится интересующий момент времени. Задается четырехзначным числом (1970 или 2004). Если год принадлежит к промежутку с 1900 по 1999 год, то параметру year достаточно присвоить только две последние цифры из его номера.


Например, число 80 будет интерпретировано как 1980 год (а не 80 год после рождества Христова).

Отсчет лет на компьютере традиционно ведется с 1900 года (что, кстати, в свое время породило гипотетическую проблему 2000 года). Поэтому годы, предшествующие 1900, обычно обозначаются при помощи отрицательных чисел. Например, 1899 году соответствует число –1, 1500 году – – 500,1 году – –1899. Впрочем, если номер года больше нуля, для его задания можно применять и обычное обозначение (например, 1784). Но годы до рождества Христова можно задать, только исходя из 1900 года как точки отсчета;

• month — месяц, в котором произошло (или произойдет) событие. Задается при помощи порядкового номера. Нумерация месяцев, что довольно необычно, ведется не с 1, а с 0. Поэтому, например, у марта будет номер 2, хотя он является третьим месяцем в году;

• date — число месяца. Обратите внимание, что отсчет чисел ведется с 1, а не с 0, как в случае прочих параметров конструктора Date();

• hour — час, к которому относится фиксируемый момент времени. Принимает значения от 0 до 23;

• minute — минута. Может изменяться от 0 до 59;

• second — номер секунды, к которой относится событие.


Отсчет секунд ведется с 0;

• millisecond — индекс миллисекунды, соответствующей записываемому моменту времени. Мо-
жет изменяться от 0 до 999.

Далеко не всегда время события может быть указано с точностью до миллисекунд. Как правило, для приемлемой точности адресации события достаточно лишь части параметров конструктора Date() (например, чтобы подсчитать, сколько осталось до дня рождения, следует указать год, месяц и день). По этой причине все аргументы, кроме year и month, являются необязательными. Если вы их не задаете, то им автоматически присваивается значение 0 (или 1 в случае параметра date).

Например:
var time:Date=new Date(2003,2,5,6);
trace(time); // Выводит "Wed Mar 5 06:00:00 GMT+0300 2003"

Алгоритм конструктора Date() интерпретирует переданные ему параметры, исходя из локального времени. Если же необходимо зафиксировать событие относительно универсального времени, то нужно использовать методы группы setUTC...().

Имеется и третья форма использования конструктора Date(), недокументированная в справке от Macromedia, но описанная в ЕСМА-262. Создать объект класса Date для момента времени можно, передав конструктору в качестве параметра его значение в машинном представлении.


Например:

var time:Dace=new Date(-1046833200000);
trace(time); // Выводит "Fri Oct 30 00:00:00 GMT+0300 1936"

Третья форма конструктора Date() применяется нечасто. Но о ней стоит помнить, так как иначе становится неясно, почему во второй форме обязательными являются параметры года и месяца, а не только года.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела Action Script на эту тему:
Компьютерное время
Методы класса Date
Определение времени, прошедшего с начала проигрывания фильма
Основные понятия теории измерения времени

Вернуться в раздел: Action Script / 14. Время и дата