我正在尝试使用基于我正在运行的事件的当前日期的选项来填充 HTML 选择字段 (#contestdate)。我使用 JavaScript 进行主要计算,并使用 jQuery 添加到选择字段。
日期范围应将当前日期放在中间(下面以红色突出显示),并在当前日期的两侧选择 7 天(我需要选择之前和 future 的日子)。
我已经有了可以显示日期的代码,但是,日期变成了负值。这些天数也会超过月底的日期,尽管没有显示。下面的代码应将 10/30/2015 和 10/31/2015 显示为前两个选择(在“所有日期”之后):
我需要的是它自动计算每个月有多少天,并相应地修改日期。我将在 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) 的日期,这可能会改变解决方案。
如果有人能让我知道(或为我指出正确的方向)一种轻松完成此操作的方法,我将非常感激:)
最佳答案
我创建了一支笔:http://codepen.io/anon/pen/OyoWXK
操作Date
对象来获取过去和 future 的日期。
至于选项value
,我只使用了Date
对象,您可以将其更改为适合您需要的任何内容。
希望这对您有帮助。
关于Javascript 日期范围与月份重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33534538/