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 для первой даты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Создайте переменную, которая будет представлять первый день. Это какая-то условная величина, или реальная дата? Пытаюсь ее вывести, показывает ерунду. спасибо.

    1. Суть в том – что тут ты вычисляешь разность в миллисекундах между двумя датами …

  2. вот и ответ: промежуток времени в миллисекундах продолжительностью с 1 января 1970 года до настоящего момента. спасибо :)

  3. “Создайте переменную, которая будет хранить разницу между первым и вторым днем var millisLeft:Number = todayTime – newYearTime;” newYearTime – todayTime

  4. “Однако у экземпляров класса Math есть свойство time…”(С) Простите, мы про класс Date говорим. Так Math или Time?

  5. “Однако у экземпляров класса Math есть свойство time…”(С) Простите, мы про класс Date говорим. Так Math или Date? (корректировка моего последнего комментария)

    1. Думаю, упоминание класса Math просто ошибка, так как и речь у нас о классе Date идет, да и двумя уроками раньше мы узнали что у Math нет ни экземпляров ни свойств.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *