【问题标题】:Change the start week on Jquery datepicker ShowWeek在 Jquery datepicker ShowWeek 上更改开始周
【发布时间】:2013-07-19 12:17:42
【问题描述】:

我正在开发一个使用 jQuery 日期选择器的项目,并尝试使用 showWeek 属性在日历旁边显示周数。

我的问题是我不希望“第 1 周”从 1 月 1 日开始,而是在 8 月 1 日开始。

有什么方法可以实现吗?

谢谢

【问题讨论】:

  • 您可以使用 calculateWeek 然后做必要的数学来调整 8 月 1 日吗?
  • 可能,但我需要将该数据传回日期选择器周列 - 这是我无法弄清楚的部分。
  • 查看文档api.jqueryui.com/datepicker/#option-calculateWeek,它可能会解释您需要做什么。
  • 嘿!我查看了发送给我的资源,经过一番摆弄后弄明白了!我的代表很低,所以我会在 5 小时内或任何时候发布答案

标签: javascript jquery datepicker jquery-ui-datepicker


【解决方案1】:

下个月工作,上个月不工作,所以我禁用了上个月。

如果当前月份少于 8 月,则日历总是在 8 月份打开,而日历从上一年的 8 月开始。

工作演示http://jsfiddle.net/cse_tushar/dR429/4

$(document).ready(function () {
    i = 0;
    month_set = 8;
    var d = new Date();
    week = (Math.ceil(Math.round(((new Date(d.getFullYear() + 1, 1)) - (new Date(d.getFullYear(), 1))) / 86400000) / 7));
    current_year = ((d.getMonth() + 1) >= month_set) ? d.getFullYear() : d.getFullYear() - 1;

    function myWeekCalc() {
        i++;
        return i = (i > week) ? 0 : i;
    }
    $("#d1").datepicker({
        showWeek: true,
        defaultDate: new Date(current_year, month_set-1, 1),
        calculateWeek: myWeekCalc,
        onClose: function () {
            i = 0;
        },
        onChangeMonthYear: function (year, month) {
            var diff = month - month_set;
            var d = new Date(month + ' 1' + ',' + year);
            if (d.getDay() != '0') {
                i--;
            }
            if (month == month_set) {
                i = 0;
            }
            if (current_year != year && month == month_set) {
                week = (Math.ceil(Math.round(((new Date(year + 1, 1)) - (new Date(year, 1))) / 86400000) / 7));
            }
        }
    }).focus(function () {
        $(".ui-datepicker-prev").remove();
    });
});

【讨论】:

    【解决方案2】:

    使用 jQuery 日期选择器 custom Week of Year 计算Moment 库根据您的语言环境计算一年中的第几周。

    请参考这个工作示例:

    https://jsfiddle.net/amansour/sez8fLgt/

    function myWeekCalc(dt) {
      var dat = moment(dt).locale("en-US");
      return dat.week(); 
      // return dat.isoweek(); // you will have to use firstDay : 1
    }
    
    $(function(){
    
      $("[type='date']").datepicker({
        changeMonth: true,
        changeYear: true,
        showWeek: true, 
        firstDay: 0, // 1 being Monday, 0 being Sunday, 6 being Friday
        calculateWeek: myWeekCalc,
        dateFormat: "yy-mm-dd",
        yearRange: "-12:+12"
      });
    
    });

    【讨论】:

      猜你喜欢
      • 2011-06-27
      • 2010-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      • 1970-01-01
      • 2011-05-25
      相关资源
      最近更新 更多