В гибком проводе я пытаюсь сделать вычет даты и дополнение, но не мог найти способ сделать это.
например: общедоступная дата var dateNow:Date=new ();
Как я могу получить Дату на 3 месяца ранее, чем dateNow?
Спасибо!!!
Для этого можно использовать конструктор Date. Первый аргумент конструктора Date занимает либо год, либо метку времени. Можно использовать свойство Date.time
, чтобы получить метку времени из объекта даты. Получив метку времени, вы можете добавить/вычесть из нее некоторое количество секунд, а затем передать ее в new Date(timestamp)
, и вы получите совершенно новую дату, которая представляет новую метку времени.
Редактировать; Как отметил комментатор, манипулирование временем может быть не лучшим способом. Но вы все равно можете использовать конструктор Date следующим образом:
var now:Date = new Date();
var threeMonthsAgo = new Date(now.fullYear,
now.month - 3,
now.date,
now.hour,
now.minute,
now.second,
now.millisecond);
Конструктор Date достаточно умен, чтобы работать с отрицательными значениями или значениями больше 11.
Попробуйте библиотеку с открытым исходным кодом DateUtils.
Я часто использую его в календаре Flextras, и он отлично работает. Я почти уверен, что есть метод DateAdd. Чтобы получить дату на 3 месяца раньше, вы можете просто добавить отрицательное число 3.
Еще одна альтернатива - «Свидания Питера» для ленивых людей, мне нравится, что это приходит от CF http://blog.flexexamples.com/2007/08/24/date-math-for-lazy-people/
Я не верю, что есть встроенная арифметика даты. Даже официальная документация Adobe для класса Date создает математические вычисления даты с нуля при его использовании.
Взгляните на ссылку выше. В документации создается класс DateMath со статическими методами, чтобы делать то, что вы хотите. Учитывая это, я не уверен, почему они не сделали это частью стандарта, но так оно и есть. Я предлагаю скопировать его оттуда и расширить.