PDA

Просмотр полной версии : Создание массива дат


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

// Задаю массив необходимый для отправки в БД
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); вне цикла,т.е.:

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
// Задаю массив необходимый для отправки в БД
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
Огромнейшее спасибо!