JavaScript租借日期逻辑

时间:2012-08-01 15:33:01

标签: javascript html datetime pseudocode

所以,基本上我正在建立一个租赁表格,你有三个基本的下拉列表,分别是月,日,年,“租金来自”,然后是另外三个“租金直到”。

这很容易,我甚至得到了不错的闰年支持等等。问题在于根据“租金来源”产生“租金直至”。我希望“租到”只能在接下来的五个单词中显示下拉后的字样,并且我在制定逻辑时遇到了严重困难。

此外,范围是可变的,所以我正在尝试使用“租借长度”参数来实现更改。该代码还使用参考点。因此,拾取下拉列表是“pick_up_day”,“pick_up_month”等。这是为了尝试使代码可移植到具有一致ID'd HTML元素的多个项目。

这是我的基本逻辑以及到目前为止我所得到的:

这是设置起源日期等的代码。

function populate_dates(identifier) {
    "use strict";
    var i, currentday, node, textbox, maxdays;
    while (document.getElementById(identifier + "days").hasChildNodes()) {
        document.getElementById(identifier + "days").removeChild(document.getElementById(identifier + "days").firstChild);
    }
    currentday = new Date();
    switch (parseInt(document.getElementById(identifier + "month").value, 10)) {
    case 2:
        if (new Date(currentday.getFullYear(), 1, 29).getDate() === 29) {
            maxdays = 29;
        } else {
            maxdays = 28;
        }
        break;
    case 9:
    case 4:
    case 6:
    case 11:
        maxdays = 30;
        break;
    default:
        maxdays = 31;
        break;
    }
    for (i = 1; i <= maxdays; i = i + 1) {
        node = document.createElement("option");
        textbox = document.createTextNode(i);
        node.value = i;
        node.appendChild(textbox);
        document.getElementById(identifier + "days").appendChild(node);
    }
}


window.onload = function() {
    "use strict";
    var currentday, i, node, textbox;
    currentday = new Date();
    for (i = 0; i <= 1; i = i + 1) {
        node = document.createElement("option");
        textbox = document.createTextNode(currentday.getFullYear() + i);
        node.value = currentday.getFullYear() + i;
        node.appendChild(textbox);
        document.getElementById("pick_up_year").appendChild(node);
    }
    document.getElementById("pick_up_month").onchange = function () {
        populate_dates("pick_up_");
    };
    populate_dates("pick_up_");
};

现在关于“直到”日期的逻辑,我已经制定了这样的伪代码,但对于这么简单的任务来说似乎过于复杂:

function a(referencer, ref1, ref2, rentlength) {
    //Make datetime object out of ref1's current date;
    datetime.setDays(datetime.getDate() + rentlength)
    for (i = 0; i <= rentlength; i = i + 1) {
        datetime.setDays(datetime.getDate() + i);
        outmatrix[outmatrix.length] = [getDates, getMonth, getYear];
    }
    outmatrix.removeduplicates;
    date_generator(ref2, outmatrix)
}

function date_generator(referencer, inputmatrix) {
    Clean up referencer
    Loop through, create nodes based on array[y+1][x];
}

有没有更好的方法来做到这一点,我只是没有看到?在删除重复项时,将Datetime对象转换为三个下拉列表的好方法是什么?有没有比我目前的方式更好的方法来处理这个问题?

1 个答案:

答案 0 :(得分:2)

就逻辑而言,您需要以DATE格式将日期设置为开始日期和租借时间的总和。