jQuery UI Datepicker显示不正确的周数

siotufzp  于 2023-03-29  发布在  jQuery
关注(0)|答案(7)|浏览(121)

当使用jQuery UI Datepicker并从星期日开始一周时,周数是不正确的。例如,2016年1月3日应该是第1周,因为所有日期(3日至9日)都在同一年。但正如您在下面的屏幕截图中看到的那样,UI显示为第53周。

下面是呈现日期选择器的代码:

$("#datepicker" ).datepicker({
    showWeek: true,
    firstDay: 0
});

所以没有什么特别的,除了显示周数和从星期日而不是星期一开始一周(默认情况下)。
以下是对这个问题的一点看法:https://jsfiddle.net/vLqabmmz/

djmepvbi

djmepvbi1#

由于这似乎是jQuery UI中的一个bug,我在这里发布了可能的答案,将其作为bug报告给jQuery UI团队:https://bugs.jqueryui.com/ticket/14907#ticket

zpgglvta

zpgglvta2#

我进一步检查了jqueryUI的iso 8601 Week()方法工作正常,问题在于它的表示(布局)。
如果提取周的值,可以看到遵循了标准并且很好。3-rd是第53周,之后是4... 7(这是一年中的第一个星期四,这是第1周)。您可以使用下面的代码进行检查。

$(function() {
    $( "#datepicker" ).datepicker({
      showWeek: true,
      onSelect: function(dateText, inst) {
            $(this).val("'Week Number '" + $.datepicker.iso8601Week(new Date(dateText)));
      }
    });
  });
7rtdyuoh

7rtdyuoh3#

calculateWeek的文档中可以看到:
此函数使用ISO 8601对周的定义:周从星期一开始,一年的第一周包含1月4日。
所以评论是正确的,这是一个bug。虽然这个问题还没有解决,但你可以通过设置firstDay为1来轻松解决这个问题,就像这样:

$("#datepicker" ).datepicker({
    showWeek: true,
    firstDay: 1
});

周数是正确的,这比重写calculateWeek更容易,唯一的区别是周将从星期一开始,而不是星期日。注意,默认行为将firstDay设置为0。

iq3niunx

iq3niunx4#

下面是2017年第一周的jQuery日历显示-完全包含在新的一年中。
然而,周数显示为2016年的52(wtf)。x1c 0d1x
对我来说,它看起来像一个需要纠正的bug,否则没有理由显示周数。

relj7zay

relj7zay5#

https://en.wikipedia.org/wiki/ISO_week_date
一年的第一周是包含该年第一个星期四的一周(因此,总是包含1月4日)。

bkhjykvo

bkhjykvo6#

您应该更新区域设置:

moment.updateLocale('en', {
    week: {
        dow: 1,
        doy: 1
    }
});
hwazgwia

hwazgwia7#

$("#datepicker" ).datepicker({
    showWeek: true,
    firstDay: 1
});

在星期一开始一天,然后它得到星期一的周数,而不是星期天,这应该确定你的周数。

相关问题