如何在Javascript中以月为单位获取周数?
我需要生成带有周数的年度日历,周数应如下图所示: 然而,每个月获取周数并不是一件小事,这样它们就不会重叠或丢失。我正在使用中的weekCount()函数。为了显示日历,我编写了以下代码:如何在Javascript中以月为单位获取周数?,javascript,calendar,Javascript,Calendar,我需要生成带有周数的年度日历,周数应如下图所示: 然而,每个月获取周数并不是一件小事,这样它们就不会重叠或丢失。我正在使用中的weekCount()函数。为了显示日历,我编写了以下代码: var year = parseInt($(this).text()); var months = {1:'leden',2:'únor',3:'březen',4:'duben',5:'květen',6:'červen',7:'červenec',8:'srpen',9:'září',10:'ř
var year = parseInt($(this).text());
var months = {1:'leden',2:'únor',3:'březen',4:'duben',5:'květen',6:'červen',7:'červenec',8:'srpen',9:'září',10:'říjen',11:'listopad',12:'prosinec'};
var calendar = $('<div id="summary_search_form_menu"></div>');
calendar.offset({top:$(this).offset().top + $(this).height() + 10}).css({right: '0px'});
var cur_week = 0;
for (var i=1;i<=12;i++) {
var row = $('<div class="row"></div>');
row.append('<div class="month button dark-blue">'+months[i]+'</div>');
var week_count = weekCount(year, i);
for (var week=1;week<week_count;week++) {
cur_week++;
row.append('<div class="week button blue">'+cur_week+'</div>');
}
calendar.append(row);
}
$('body').append(calendar);
var year=parseInt($(this.text());
变量月份={1:'leden',2:'unor',3:'březen',4:'duben',5:'květen',6:'c erven',7:'c ervenec',8:'srpen',9:'září',10:'řjen',11:'listopad',12:'prosinec';
var日历=$('');
calendar.offset({top:$(this.offset().top+$(this.height()+10}).css({right:'0px'});
var cur_week=0;
对于(var i=1;i好的,我终于自己解决了这个问题。如果有人觉得它有用,我会发布我的最终代码,它可以根据我的需要工作
function weekCount(year, month_number) {
var firstOfMonth = new Date(year, month_number-1, 1);
var lastOfMonth = new Date(year, month_number, 0);
var used = firstOfMonth.getDay() + lastOfMonth.getDate();
return Math.ceil( used / 7);
}
Date.prototype.getWeekNumber = function(){
var d = new Date(+this);
d.setHours(0,0,0);
d.setDate(d.getDate()+4-(d.getDay()||7));
return Math.ceil((((d-new Date(d.getFullYear(),0,1))/8.64e7)+1)/7);
};
var year = parseInt($(this).text());
var months = {1:'leden',2:'únor',3:'březen',4:'duben',5:'květen',6:'červen',7:'červenec',8:'srpen',9:'září',10:'říjen',11:'listopad',12:'prosinec'};
var calendar = $('<div id="summary_search_form_menu"></div>');
calendar.offset({top:$(this).offset().top + $(this).height() + 10}).css({right: '15px'});
var cur_week = 0;
var col1 = $('<div id="summary_search_form_menu_col1"></div>');
var col2 = $('<div id="summary_search_form_menu_col2"></div>');
calendar.append(col1);
calendar.append(col2);
var col2_table = $('<div id="summary_search_form_menu_col2_table"></div>');
col2.append(col2_table);
for (var i=1;i<=12;i++) {
var row = $('<div class="row"></div>');
col1.append('<div class="month button dark-blue">'+months[i]+'</div>');
var week_count = weekCount(year, i);
var d = new Date(year, i-1, 1, 0,0,0);
var first_week_in_month = d.getWeekNumber();
for (var week=(cur_week == first_week_in_month ? 2 : 1);week<=week_count;week++) {
cur_week++;
row.append('<div class="week button blue">'+cur_week+'</div>');
}
col2_table.append(row);
}
$('body').append(calendar);
功能周数(年、月\u号){
var firstOfMonth=新日期(年、月、编号1、1);
var lastOfMonth=新日期(年、月\号,0);
使用的变量=firstOfMonth.getDay()+lastOfMonth.getDate();
返回Math.ceil(已使用/7);
}
Date.prototype.getWeekNumber=函数(){
var d=新日期(+此日期);
d、 设定小时数(0,0,0);
d、 设置日期(d.getDate()+4-(d.getDay()| 7));
返回Math.ceil(((d-newdate(d.getFullYear(),0,1))/8.64e7)+1)/7);
};
var year=parseInt($(this.text());
变量月份={1:'leden',2:'unor',3:'březen',4:'duben',5:'květen',6:'c erven',7:'c ervenec',8:'srpen',9:'září',10:'řjen',11:'listopad',12:'prosinec';
var日历=$('');
calendar.offset({top:$(this.offset().top+$(this.height()+10}).css({right:'15px'});
var cur_week=0;
var col1=$('');
var col2=$('');
calendar.append(col1);
calendar.append(col2);
var col2_表=$('');
col2.append(col2_表);
对于(VarI=1;一年中只有49周?这是农历吗?不,这是一个我需要纠正的错误,这就是为什么我要问这个问题:-)如果一个月有4周的完整时间和3天的额外时间怎么办?第4周或第5周的输出是什么?有一个标准的周数,这篇文章几乎把它钉在了@AnkitAgarwal上,我不知道,可能应该有5周,但是半周应该只算一次。