Как получить массив дат для столбца субботы и столбца воскресенья в программе выбора даты в flex - PullRequest
0 голосов
/ 13 марта 2012

В компоненте datechooser я хочу получить все значения даты определенного столбца в месяце, например: Все значения даты, которые встречаются в субботу в массиве. Может ли кто-нибудь помочь мне, как получить эти значения столбца в массиве.

Спасибо

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Честно говоря, было бы проще написать функцию util, которая делает это, не используя DateChooser

function getDatesForDaysInMonth(year:Number, month:Number, dayOfWeek:Number):Array {
    var dts:Array=[];
    var dt:Date=new Date(year, month, 1);
    var firstInSeries:Date=new Date(dt);
    firstInSeries.date += (dayOfWeek-dt.day);
    if(firstInSeries.month != month) {
        firstInSeries.date += 7;
    }
    dts.push(firstInSeries);

    for(var i:int=1; true; i++) {
        var it:Date=new Date(firstInSeries.valueOf() + i*7*24*60*60*1000);
        if(it.month != month) {
            break;
        }
        dts.push(it);
    }
    return dts;
}

//tester function
function disp(a:Array):void {
    for(var i:int=0; i<a.length; i++) {
        trace(i + ": " + a[i].toString());
    }
    trace("------------------");
}

trace("Sat");
disp(getDatesForDaysInMonth(2012, 2, 6));
trace("Fri");
disp(getDatesForDaysInMonth(2012, 2, 5));
trace("Thu");
disp(getDatesForDaysInMonth(2012, 2, 4));
trace("Wed");
disp(getDatesForDaysInMonth(2012, 2, 3));
trace("Tue");
disp(getDatesForDaysInMonth(2012, 2, 2));
trace("Mon");
disp(getDatesForDaysInMonth(2012, 2, 1));
trace("Sun");
disp(getDatesForDaysInMonth(2012, 2, 0));
1 голос
/ 13 марта 2012

Я знаю, что вы сказали из DateChooser, но если никто не представляет решение с dateChooser, в качестве отступления вы можете получить то, что вы хотите с объектом Date AS, выполнив что-то вроде:

function getSaturdaysFor(year:Number, month:Number, dayOfWeek:Number):Array {
    var d:Date = new Date(year,month,1);
    var toReturn:Array = new Array();

    //Find the first occurance of the dayOfWeek
    for(var i:int = 0; i < 7; i++){
        if(d.day == dayOfWeek){ 
            break;
        } else {
            d.date++;
        }
    }

    //Find the remaning dayOfWeeks, skipping non-dayOfWeek dates
    for(var n:int = 0; n < 7; n++){ //Up to 6 possible
        if(d.month == month){
            trace("Added " + d.date);
            toReturn.push(d.date);
            d.date += 7;
        } else {
            break; //No more target days of week
        }
    }
    return toReturn;
}

//Call this function like
getSaturdaysFor(2012, 2, 6); //2012 March Saturdays
getSaturdaysFor(2012, 3, 0); //2012 April Sundays
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...