带月份重叠的Javascript日期范围

时间:2015-11-05 00:16:43

标签: javascript jquery date

我尝试使用基于我正在运行的事件的当前日期的选项来填充HTML选择字段(#contestdate)。我使用JavaScript进行主要计算,将jQuery添加到选择字段。

日期范围应该是中间的当前日期(下面突出显示为红色),在当前日期的任一侧选择7天(我需要将前一天和将来的日期作为选择)。

我已经让代码工作以显示日期,但是,日子会进入底片。这些日子也超过了月底的日期,尽管没有显示。以下代码应显示为2015年10月30日和2015年10月31日作为前两个选项(在所有日期'之后):

How it looks at the moment

我需要的是自动计算每月的天数,并相应地修改日期。我将在2015年底之前举办活动,所以我也需要多年的计算。

如果没有每个月的变量和每个月的相应条件,我无法想办法做到这一点。

我的代码如下:

// Add the available days to the dropdown for date selection (American format)
$(document).ready(function() {
    var today = new Date();
    var dd = today.getDate();
    var mm = today.getMonth() + 1; // January is 0
    var yyyy = today.getFullYear();

    // Days 9 and under
    if (dd < 10) {
        dd = '0' + dd;
    }

    // Months 9 and under
    if (mm < 10) {
        mm = '0' + mm;
    }

    // Previous dates (Needs calculation for change in month / year)
    dd = dd - 8;
    for (i = 1; i < 8; i++) {
        dd = dd + 1;
        theDate = mm + '/' + dd + '/' + yyyy;
        $('#contestdate').append($('<option />').val(i).html(theDate));
    }

    // Current date
    dd = dd + 1;
    theDate = mm + '/' + dd + '/' + yyyy;
    $('#contestdate').append($('<option />').val('8').html(theDate.fontcolor("red")));

    // Future dates (Needs calculation for change in month / year)
    for (i = 9; i < 16; i++) {
        dd = dd + 1;
        theDate = mm + '/' + dd + '/' + yyyy;
        $('#contestdate').append($('<option />').val(i).html(theDate));
    }
});

请注意,我需要美国日期格式的日期(mm / dd / yyyy),这可能会改变解决方案。

如果有人能让我知道(或指出我正确的方向)一种无痛地做到这一点的方法,那将非常感激:)

1 个答案:

答案 0 :(得分:1)

我创建了一支笔:http://codepen.io/anon/pen/OyoWXK

操纵Date对象以获取过去和将来的日期。

对于选项value,我只使用了Date对象,您可以将其更改为符合您需要的任何内容。

希望这会对你有所帮助。