从 Jquery UI 日期选择器获取正常周数
Get Normal Week number from Jquery UI datepicker
我正在尝试从 Jquery UI 日期选择器中获取当月的周数 (1,2,3,4,5)。我用谷歌搜索并得到了 iso 8601 周的代码,但不是正常的周数。
请帮忙
虽然我只对它进行了冒烟测试,但它应该能让您接近您想要的结果,而且可能还有更多边缘条件需要解决。
我基本上是取每月第一天的iso8601Week,然后从所选日期的iso8601Week中减去它。这对大多数日期都是有效的,但如果日期早于星期四,ISO 8601 会将前一年的 1 月 4 日放在前几天。这就是 % 52 的原因。
该代码假定一个名为 testDate 的输入和一个名为 label1 的标签:
$('#testDate').datepicker({
onSelect: function(dateText, inst) {
var d = new Date(dateText);
var d1 = new Date(d.getFullYear(), d.getMonth(), 1)
var x = $.datepicker.iso8601Week(d) % 52;
var y = $.datepicker.iso8601Week(d1) % 52;
$('#label1').text(x-y+1);
}
});
我保留了所有带有部分结果的变量,这样您就可以修改这些值。此代码假定一周从星期一开始(这是 ISO 8601 标准),并且星期一之前的部分星期是第 1 周。因此,如果该月从星期一开始,则第一个星期一在第 1 周,如果该月在任何其他一天开始,第一个星期一在第 2 周。如果每月的 2 号在星期一并且也在第 2 周,这看起来有点奇怪,但如果你不喜欢这样,你将不得不花费一些时间详细决定你做什么喜欢什么。
我正在尝试从 Jquery UI 日期选择器中获取当月的周数 (1,2,3,4,5)。我用谷歌搜索并得到了 iso 8601 周的代码,但不是正常的周数。
请帮忙
虽然我只对它进行了冒烟测试,但它应该能让您接近您想要的结果,而且可能还有更多边缘条件需要解决。
我基本上是取每月第一天的iso8601Week,然后从所选日期的iso8601Week中减去它。这对大多数日期都是有效的,但如果日期早于星期四,ISO 8601 会将前一年的 1 月 4 日放在前几天。这就是 % 52 的原因。
该代码假定一个名为 testDate 的输入和一个名为 label1 的标签:
$('#testDate').datepicker({
onSelect: function(dateText, inst) {
var d = new Date(dateText);
var d1 = new Date(d.getFullYear(), d.getMonth(), 1)
var x = $.datepicker.iso8601Week(d) % 52;
var y = $.datepicker.iso8601Week(d1) % 52;
$('#label1').text(x-y+1);
}
});
我保留了所有带有部分结果的变量,这样您就可以修改这些值。此代码假定一周从星期一开始(这是 ISO 8601 标准),并且星期一之前的部分星期是第 1 周。因此,如果该月从星期一开始,则第一个星期一在第 1 周,如果该月在任何其他一天开始,第一个星期一在第 2 周。如果每月的 2 号在星期一并且也在第 2 周,这看起来有点奇怪,但如果你不喜欢这样,你将不得不花费一些时间详细决定你做什么喜欢什么。