繁体   English   中英

如何用JavaScript获取月份中的周数?

[英]How to get week numbers in month in Javascript?

我需要生成带有周数的年份日历,该日期应类似于此图像: 在此处输入图片说明

但是,每个月获取周数并非易事,因此它们不会重叠或丢失。 我正在从这个SO问题中使用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:'ří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);

任何方式如何正确显示周数?

好的,我终于自己解决了。 万一有人觉得有帮助,我发布我的最终代码,该代码可以根据需要工作。

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM