Как создать алгоритм парсинга дат?

Ребята, помогите, пожалуйста, 2-й день бьюсь над задачей...
Есть вот такой код:

function getRange() {

    var dateFrom = new Date(2014, 2, 11); //дата начала диапазона
    var dateTo = new Date(2015, 3, 23); //дата конца диапазона

    var dayRange = Math.ceil((dateTo - dateFrom)/(1000 * 60 * 60 * 24)); //количество дней в диапазоне

    var dt = [];

    var y = {}; //хэш годов диапазона
    var m = {}; //хэш месяцев
    var d = {}; //хэш дней

    for(var i = 0; i < dayRange; i++) {
        dateFrom.setDate(dateFrom.getDate() + 1); // прибавляем к начальной дате 1 день

        y[dateFrom.getFullYear()] = {}; // создаем хэш годов

        var pushDate = new Date(dateFrom); 

        dt.push(pushDate); //пушим в масив все даты диапазона
    }

}


Мне нужно из вот этого сделать объект с датами, в котором будут года из диапазона, в этих годах вложены месяцы с учетом начала диапазона и конца, а в месяцах соответствующее этим месяцам даты.
  • Вопрос задан
  • 2557 просмотров
Решения вопроса 1
@t0di
var from= new Date(2013, 5, 12);
var to= new Date(2016, 2, 25);
getRange(from, to);
function getRange(dateFrom, dateTo) {
    var dayRange = (dateTo - dateFrom)/(1000 * 60 * 60 * 24);

    var result = {};
    for(var i = 0; i < dayRange; i++) {
        if (typeof result[dateFrom.getFullYear()] == "undefined")
            result[dateFrom.getFullYear()] = {};
        if (typeof result[dateFrom.getFullYear()][dateFrom.getMonth()+1] == "undefined")
            result[dateFrom.getFullYear()][dateFrom.getMonth()+1] = [];

        result[dateFrom.getFullYear()][dateFrom.getMonth()+1].push(dateFrom.getDate());

        dateFrom.setDate(dateFrom.getDate() + 1);
    }
    return result;
}

Удалил все комменты, надеюсь и так всё ясно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы