我有一些纯粹的javascript日历。 我的问题是我想在选择的月份之前添加日期。
null
我希望我的意思很清楚。这是我的剧本
|so|mo|di|mi|do|fr|sa|
______________________
|29|30|31|1 |2 |3 | 4| <-- here 29,30,31
______________________
|5 |6 |.....
我尝试使用setDate(),但我没有掌握它。
答案 0 :(得分:2)
如注释中所述,setDate(和Date构造函数)可以具有负值。但是,您可以将startdate设置为一周的开头,并始终添加整周,而不是pre
和post
循环:
function Calendar(id, year, month) {
var elem = document.getElementById(id)
var mon = month - 1; // (1)
var d = new Date(year, mon, 1 );
var start = 1-d.getDay();
var table = ['<table>'];
while(d.getMonth() <= mon) {
table.push('<tr>');
for(var i =0 ; i< 7; i++){
d = new Date(year,mon,start++);
table.push('<td>'+d.getDate() + '</td>')
}
table.push('</tr>');
}
table.push('</table>')
elem.innerHTML = table.join('\n')
}
new Calendar("cal", 2015, 9);
编辑:备用版本以防万一&#39;其他&#39;月份的颜色应该更浅:fiddle
答案 1 :(得分:0)
尝试定义月视图的开始和结束日期,并从开始到结束迭代。
var startDate = new Date(d);
var endDate = new Date(d.getFullYear(), d.getMonth() + 1, d.getDate() - 1);
while (startDate.getDay() != 0) {
startDate.setDate(startDate.getDate() - 1);
}
while (endDate.getDay() != 6) {
endDate.setDate(endDate.getDate() + 1);
}
答案 2 :(得分:0)
我以这种方式管理它:
tmp = new Date(year, mon, 0).getDate() // return day of the last month
for (var i=0; i<(d.getDay() + 6) % 7; i++) { // count days
table.splice(1,0,'<td>'+(tmp-i)+'</td>') // adding days at first pos of table
}
由于
答案 3 :(得分:-1)
Date对象具有方法.setDate(),用于添加天数以获取更新日期。
var someDate = new Date(2015, 06, 05); // (year, month, date)
console.log('old date : ' + someDate);
var numberOfDays = 6; // No of day add or remove. use negative sign for remove days
someDate.setDate(someDate.getDate() + numberOfDays); //date object with new date (new day, new month and new year)
console.log('new date : ' + someDate);