当使用jQuery UI Datepicker并从星期日开始一周时,周数是不正确的。例如,2016年1月3日应该是第1周,因为所有日期(3日至9日)都在同一年。但正如您在下面的屏幕截图中看到的那样,UI显示为第53周。
下面是呈现日期选择器的代码:
$("#datepicker" ).datepicker({
showWeek: true,
firstDay: 0
});
所以没有什么特别的,除了显示周数和从星期日而不是星期一开始一周(默认情况下)。
以下是对这个问题的一点看法:https://jsfiddle.net/vLqabmmz/
7条答案
按热度按时间djmepvbi1#
由于这似乎是jQuery UI中的一个bug,我在这里发布了可能的答案,将其作为bug报告给jQuery UI团队:https://bugs.jqueryui.com/ticket/14907#ticket
zpgglvta2#
我进一步检查了jqueryUI的iso 8601 Week()方法工作正常,问题在于它的表示(布局)。
如果提取周的值,可以看到遵循了标准并且很好。3-rd是第53周,之后是4... 7(这是一年中的第一个星期四,这是第1周)。您可以使用下面的代码进行检查。
7rtdyuoh3#
从
calculateWeek
的文档中可以看到:此函数使用ISO 8601对周的定义:周从星期一开始,一年的第一周包含1月4日。
所以评论是正确的,这是一个bug。虽然这个问题还没有解决,但你可以通过设置
firstDay
为1来轻松解决这个问题,就像这样:周数是正确的,这比重写
calculateWeek
更容易,唯一的区别是周将从星期一开始,而不是星期日。注意,默认行为将firstDay
设置为0。iq3niunx4#
下面是2017年第一周的jQuery日历显示-完全包含在新的一年中。
然而,周数显示为2016年的52(wtf)。x1c 0d1x
对我来说,它看起来像一个需要纠正的bug,否则没有理由显示周数。
relj7zay5#
https://en.wikipedia.org/wiki/ISO_week_date:
一年的第一周是包含该年第一个星期四的一周(因此,总是包含1月4日)。
bkhjykvo6#
您应该更新区域设置:
hwazgwia7#
在星期一开始一天,然后它得到星期一的周数,而不是星期天,这应该确定你的周数。