Friday, July 15, 2016

How to return a date period

function returnDatePeriod(returnParam) {
    var today = new Date();
    var returnPeriod = [];
    var startDate = "";
    var endDate = "";
    var d = new Date();
    var dd, mm, yy;
    var weekStartDay = 1;
    var weekEndDay = 0;

    switch (returnParam.toLowerCase()) {
        case "today":
            var mm = today.getMonth() + 1;
            var dd = today.getDate();
            startDate = today.getFullYear() + "-" + (mm < 10 ? "0" + mm : mm) + "-" + (dd < 10 ? "0" + dd : dd) + " 00:00:00";
            endDate = today.getFullYear() + "-" + (mm < 10 ? "0" + mm : mm) + "-" + (dd < 10 ? "0" + dd : dd) + " 23:59:59";

            break;
        case "thisweek":
            for (var i = 0; i < 7; i++) {
                d.setDate(today.getDate() - i);
                if (d.getDay() == weekStartDay) {
                    yy = d.getFullYear();
                    mm = d.getMonth() + 1;
                    dd = d.getDate();
                    i = 7;
                }
            }
            startDate = today.getFullYear() + "-" + (mm < 10 ? "0" + mm : mm) + "-" + (dd < 10 ? "0" + dd : dd) + " 00:00:00";

            for (var i = 0; i < 7; i++) {
                d.setDate(today.getDate() + i);
                if (d.getDay() == weekEndDay) {
                    yy = d.getFullYear();
                    mm = d.getMonth() + 1;
                    dd = d.getDate();
                    i = 7;
                }
            }
            endDate = today.getFullYear() + "-" + (mm < 10 ? "0" + mm : mm) + "-" + (dd < 10 ? "0" + dd : dd) + " 23:59:59";

            break;
        case "lastweek":
            for (var i = 0; i < 7; i++) {
                d.setDate(today.getDate() - i);
                if (d.getDay() == weekStartDay) {
                    d.setDate(d.getDate() - 7);
                    yy = d.getFullYear();
                    mm = d.getMonth() + 1;
                    dd = d.getDate();
                    i = 7;
                }
            }
            startDate = today.getFullYear() + "-" + (mm < 10 ? "0" + mm : mm) + "-" + (dd < 10 ? "0" + dd : dd) + " 00:00:00";

            for (var i = 0; i < 7; i++) {
                d.setDate(today.getDate() - i);
                if (d.getDay() == weekEndDay) {
                    yy = d.getFullYear();
                    mm = d.getMonth() + 1;
                    dd = d.getDate();
                    i = 7;
                }
            }
            endDate = yy + "-" + (mm < 10 ? "0" + mm : mm) + "-" + (dd < 10 ? "0" + dd : dd) + " 23:59:59";

            break;
    }

    returnPeriod.push({ start: startDate, end: endDate });
    return returnPeriod;
}