ActionScript Date. Применение математических операций к датам

На этом уроке ActionScript мы рассмотрим 2 вопроса:

  1. ActionScript Date. Применение математических операций к датам
  2. Дополнительная информация

Чтобы применять математические операции к датам, Вам необходимо сначала создать экземпляры класса Date (ActionScript Date). В итоге Вы сможете прибавлять нужное количество секунд, минут, часов, дней, недель, лет к заданной дате и вычитать из неё, соответственно.

Также возможно складывать и вычитать даты, чтобы вычислить продолжительность времени между ними.

Вы НЕ сможете выполнять математические операции на экземплярах класса Date непосредственно, т.к. эти экземпляры являются объектами, а математические операции выполняются с числами (Number). Однако у экземпляров класса Date есть свойство time, которое представляет промежуток времени в миллисекундах продолжительностью с 1 января 1970 года до настоящего момента. Складывая или вычитая это свойство с двумя экземплярами класса Date Вы можете вычислить интервал между этими двумя датами.

После получения этого числа Вы уже можете использовать простые математические операции для конвертации его в более привычный вид. Например, если Вам нужно узнать какое количество дней между двумя датами, то Вы можете создать два экземпляра класса Date (ActionScript Date) – один для первой даты, другой для второй – затем разделить полученное число на 1000 чтобы получить количество секунд, затем на 60 для получения минут, ещё на 60 для получения часов, на 24 для дней. Чтобы округлить полученное число до целого колиства дней используйте метод round() класса Math.

ActionScript Date. Применение математических операций к датам

Создайте переменную Actionscript для первой даты

var today:Date = new Date(year, month, day);

Используйте текущую дату, записав вместо year – 2011, month – 10, day – 3.

Создайте переменную для второй даты

var newYear:Date = new Date(year, 0, 1);

Вы можете, например, использовать текущий год.

Создайте переменную, которая будет представлять первый день

var todayTime:Number = today.time;

Создайте переменную, представляющую второй день

var newYearTime:Number = newYear.time;

Создайте переменную, которая будет хранить разницу между первым и вторым днем

var millisLeft:Number = todayTime - newYearTime;

Создайте переменную, которая будет хранить количество дней, округленное до целого числа

var daysLeft:Number = Math.round();

Внутри круглых скобок в предыдущей инструкции запишите переменную millisLeft и необходимые вычисления, как например millisLeft/1000/60/60/24.

Используйте метод trace для проверки результата

trace(daysLeft);

Нажмите клавиши Ctrl + Enter. Запустится Flash Player.

В окне Output отобразится результат.

А теперь весь код целиком.

var today:Date = new Date(2011, 10, 3);
var newYear:Date = new Date(2012, 0, 1);
var todayTime:Number = today.time;
var newYearTime:Number = newYear.time;
var millisLeft:Number = newYearTime - todayTime;
var daysLeft:Number = Math.round(millisLeft/1000/60/60/24);
trace(daysLeft);

Дополнительная информация

Возможно Вам покажется странным почему свойство time класса Date (ActionScript Date) возвращает количество миллисекунд, прошедших с 1 января 1970 года. Эта дата известна как UNIX эпоха (UNIX Epoch). Вообще, проблема вычисления дат состоит в следующем: нет стандартных единиц для производства этих операций. В минуте 60 секунд, в сутках 24 часа, разное количество дней в месяцах. И хотя вполне возможно вычислить промежуток времени между текущей датой и другой прошедшей, как, например, Ваш день рождения в текущем же году, нужно хорошо потрудиться прежде чем Вы получите правильный результат, т.к. количество дней в каждом месяце разное и это нужно будет учитывать! Если же вторая дата удалена во времени на несколько лет, то проблема усложняется ещё больше, т.к. существуют високосные года.

Но решение проблемы было найдено, введя в вычисления вышеупомянутую UNIX эпоху. Конвертируя дату в простое число (Number) – количество миллисекунд, прошедшее с определенной даты – вся эта арифметика становится легкой для вычисления с помощью компьютера. Выбор конкретной даты, 1 января 1970 года, был произвольным.