Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.04.2009, 16:07
looptroop вне форума Посмотреть профиль Отправить личное сообщение для looptroop Найти все сообщения от looptroop
  № 1  
Ответить с цитированием
looptroop
 
Аватар для looptroop

Регистрация: Jun 2005
Адрес: Санкт-Петербург
Сообщений: 159
По умолчанию Компонент DateField выбор интервала

Добрый день.

В общем проблема в следующем.

В приложении есть два DateField, соответственно отображающие какой-то период времени "с" и "по"

К примеру в первом "с" была выбрана дата 01/04/2009 вот втором "по" 15/07/2009

по нажатию на кнопку хочу получить массив всех месяцов в данном промежутке, т.е. 04/2009, 05/2009, 06/2009, 07/2009

Соотв. "по" у нас может быть дата следующего года и так далее...

Иоже самое скажем и для дней в выбранном интервале, хочется получить список всех дней в интервале 01/04/2009, 02/04/2009, ..., 15/07/2009

Есть ли какие-нить готовые решения?

Спасибо.
__________________
F.U.C.K.I.N.P.U.N.K.

Старый 01.04.2009, 16:16
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 2  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
не привязываясь к синтаксису, алгоритм такой:
Код:
var date_from:Date;
var date_to:Date;

var array:Array = new Array();
while(date_from<=date_to){
   array.push(date_from);
   
   // Прибавляете date_from 1 день или 1 месяц
}

Старый 01.04.2009, 16:46
looptroop вне форума Посмотреть профиль Отправить личное сообщение для looptroop Найти все сообщения от looptroop
  № 3  
Ответить с цитированием
looptroop
 
Аватар для looptroop

Регистрация: Jun 2005
Адрес: Санкт-Петербург
Сообщений: 159
2Bruiser: спаисбо!


еще варианты?

этот мне не нравится... нужно будет делать много проверок на год и прочее...
__________________
F.U.C.K.I.N.P.U.N.K.

Старый 01.04.2009, 17:40
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 4  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
Цитата:
Сообщение от looptroop Посмотреть сообщение
2Bruiser: спаисбо!


еще варианты?

этот мне не нравится... нужно будет делать много проверок на год и прочее...
Чем конкретно не нравится?

Старый 01.04.2009, 17:08
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 5  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Какие проверки на год?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 01.04.2009, 19:03
looptroop вне форума Посмотреть профиль Отправить личное сообщение для looptroop Найти все сообщения от looptroop
  № 6  
Ответить с цитированием
looptroop
 
Аватар для looptroop

Регистрация: Jun 2005
Адрес: Санкт-Петербург
Сообщений: 159
янаверное немного не понял.

каким образом прибавлять месяц?

Добавлено через 1 час 25 минут
всем спасибо!
__________________
F.U.C.K.I.N.P.U.N.K.

Старый 03.04.2009, 12:38
Bruiser вне форума Посмотреть профиль Отправить личное сообщение для Bruiser Найти все сообщения от Bruiser
  № 7  
Ответить с цитированием
Bruiser

Регистрация: Sep 2007
Сообщений: 146
Есть такой классик, не знаю, где взял
Код:
package comstar.util.date{
	public class DateFunction {
 /**
 dateDiff(datePart:String, date1:Date, date2:Date):Number<BR>
 returns the difference between 2 dates<BR>
 valid dateParts:<BR>
 s: Seconds<BR>
 n: Minutes<BR>
 h: Hours<BR>
 d: Days<BR>
 m: Months<BR>
 y: Years<BR>
 */

/** dateAdd(datePart:String,date:Date,num:Number):Date<BR>
 returns a new date object with the appropriate date/time settings<BR>
*/

 public static function dateDiff(datePart:String, date1:Date, date2:Date):Number{
  return getDateDiffPartHashMap()[datePart.toLowerCase()](date1,date2);
 }
 public static function dateAdd(datePart:String,date:Date,num:Number):Date{
  // get date part object;
  var dpo : Object = getDateAddPartHashMap()[datePart.toLowerCase()];
  // create new date as a copy of date passed in
  var newDate : Date = new Date(date.getFullYear(),date.getMonth(),date.getDate(),date.getHours(),date.getMinutes(),date.getSeconds(),date.getMilliseconds());
  // set the appropriate date part of the new date
  newDate[dpo.set](date[dpo.get]()+num);
  // return the new date
  return newDate;
 }
 private static function getDateAddPartHashMap():Object{
  var dpHashMap : Object = new Object();
  dpHashMap["s"] = new Object();
  dpHashMap["s"].get = "getSeconds";
  dpHashMap["s"].set = "setSeconds";
  dpHashMap["n"] = new Object();
  dpHashMap["n"].get = "getMinutes";
  dpHashMap["n"].set = "setMinutes";
  dpHashMap["h"] = new Object();
  dpHashMap["h"].get = "getHours";
  dpHashMap["h"].set = "setHours";
  dpHashMap["d"] = new Object();
  dpHashMap["d"].get = "getDate";
  dpHashMap["d"].set = "setDate";
  dpHashMap["m"] = new Object();
  dpHashMap["m"].get = "getMonth";
  dpHashMap["m"].set = "setMonth";
  dpHashMap["y"] = new Object();
  dpHashMap["y"].get = "getFullYear";
  dpHashMap["y"].set = "setFullYear";
  return dpHashMap;
 }
 private static function getDateDiffPartHashMap():Object{
  var dpHashMap:Object = new Object();
  dpHashMap["s"] = getSeconds;
  dpHashMap["n"] = getMinutes;
  dpHashMap["h"] = getHours;
  dpHashMap["d"] = getDays;
  dpHashMap["m"] = getMonths;
  dpHashMap["y"] = getYears;
  return dpHashMap;
 }
 private static function compareDates(date1:Date,date2:Date):Number{
  return date1.getTime() - date2.getTime();
 }
 private static function getSeconds(date1:Date,date2:Date):Number{
  return Math.floor(compareDates(date1,date2)/1000);
 }
 private static function getMinutes(date1:Date,date2:Date):Number{
  return Math.floor(getSeconds(date1,date2)/60);
 }
 private static function getHours(date1:Date,date2:Date):Number{
  return Math.floor(getMinutes(date1,date2)/60);
 }
 private static function getDays(date1:Date,date2:Date):Number{
  return Math.floor(getHours(date1,date2)/24);
 }
 private static function getMonths(date1:Date,date2:Date):Number{
  var yearDiff:Number = getYears(date1,date2);
  var monthDiff:Number = date1.getMonth() - date2.getMonth();
  if(monthDiff < 0){
   monthDiff += 12;
  }
  if(date1.getDate()< date2.getDate()){
   monthDiff-=1;
  }
  return 12 *yearDiff + monthDiff;
 }
 private static function getYears(date1:Date,date2:Date):Number{
  return Math.floor(getDays(date1,date2)/365);
 }
}
}

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 11:01.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.