Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Создание массива дат (http://www.flasher.ru/forum/showthread.php?t=143407)

parovozeg 16.08.2010 02:03

Создание массива дат
 
Доброго времени суток!
В процессе работы возникла проблема, с которой справиться не получается.В программировании я пока чайник, поэтому за возможно глупый вопрос камнями прошу не бросаться. Суть в следующем: имеется две даты (начальная и конечная, беруться из DateField), требуется составить массив из промежуточных дат для последующей отправки в базу данных.
Вид на данный момент у меня такой (но увы нерабочий):
Код AS1/AS2:

   // Задаю массив необходимый для отправки в БД
  var date_arr = new Array();
  var millisecondsPerDay = 1000 * 60 * 60 * 24;
  var oneday:Date = new Date(dateToCheck.getTime());
  // Расчет количества дней между начальной и конечной датой (dateToCheck - начальная дата, dateToCheck1- конечная)
  var n = (dateToCheck1.getTime () - dateToCheck.getTime ()) / (1000 * 60 * 60 * 24);
  trace (n);
  // И моя запись в массив
  for (i=0; i<=n-2;i++ )
                {
                        var oneday1:Date = new Date();
                        oneday1=oneday;
                        oneday1.setTime(oneday.getTime() + millisecondsPerDay);
                        date_arr.push(oneday1);
                        trace(date_arr);
                }

При таком исполнении,если допустим задать 22 и 28 августа, выдаст следующее:
Код:

Mon Aug 23 00:53:26 GMT+0400 2010
Tue Aug 24 00:53:26 GMT+0400 2010,Tue Aug 24 00:53:26 GMT+0400 2010
Wed Aug 25 00:53:26 GMT+0400 2010,Wed Aug 25 00:53:26 GMT+0400 2010,Wed Aug 25 00:53:26 GMT+0400 2010
Thu Aug 26 00:53:26 GMT+0400 2010,Thu Aug 26 00:53:26 GMT+0400 2010,Thu Aug 26 00:53:26 GMT+0400 2010,Thu Aug 26 00:53:26 GMT+0400 2010
Fri Aug 27 00:53:26 GMT+0400 2010,Fri Aug 27 00:53:26 GMT+0400 2010,Fri Aug 27 00:53:26 GMT+0400 2010,Fri Aug 27 00:53:26 GMT+0400 2010,Fri Aug 27 00:53:26 GMT+0400 2010

Но, если поставить trace(date_arr); вне цикла,т.е.:
Код AS1/AS2:

for (i=0; i<=n-2;i++ ) 
                {
                        var oneday1:Date = new Date();
                        oneday1=oneday;
                        oneday1.setTime(oneday.getTime() + millisecondsPerDay);
                        date_arr.push(oneday1);
                }
trace(date_arr);

то выдаст
Код:

Fri Aug 27 00:57:09 GMT+0400 2010,Fri Aug 27 00:57:09 GMT+0400 2010,Fri Aug 27 00:57:09 GMT+0400 2010,Fri Aug 27 00:57:09 GMT+0400 2010,Fri Aug 27 00:57:09 GMT+0400 2010

Никак не могу разобраться как нормально создать этот массив,чтобы его можно было записать в базу.Подскажите пожалуйста.

iNils 16.08.2010 02:38

Цитата:

Но, если поставить trace(date_arr); вне цикла,т.е.:
то выдаст
А что вы ожидали увидеть?

parovozeg 16.08.2010 02:47

Ожидал, то что было в первом случае,но похоже не понимаю саму суть процесса.

iNils 16.08.2010 02:52

В первом случаи у вас выводится содержимое массива по мере его заполнения. А во втором уже заполненный массив. Все верно.

parovozeg 16.08.2010 02:56

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

iNils 16.08.2010 03:02

Так это и есть этот массив.

parovozeg 16.08.2010 03:10

Заполненный массив состоит из записаной несколько раз последней даты.Мне же требуются все промежуточные значения. Видимо я как то неправильно задаю заполнение и поэтому хочу узнать как это нормально реализовать.

iNils 16.08.2010 03:21

Код AS1/AS2:

// Задаю массив необходимый для отправки в БД
var date_arr = new Array ();
var millisecondsPerDay = 1000 * 60 * 60 * 24;
// Расчет количества дней между начальной и конечной датой (dateToCheck - начальная дата, dateToCheck1- конечная)
var n = (dateToCheck1.getTime () - dateToCheck.getTime ()) / (1000 * 60 * 60 * 24);
trace (n);
// И моя запись в массив
for (i = 1; i < n; i++) {
        var oneday:Date = new Date ();
        oneday.setTime (dateToCheck.getTime () + millisecondsPerDay * i);
        date_arr.push (oneday.getDate ());
        trace (date_arr);
}


parovozeg 16.08.2010 03:34

Огромнейшее спасибо!


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

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